- 博客(30)
- 收藏
- 关注
原创 牛客网_算法初级班_判断链表是否有环_返回两个无环的链表相交的第一个节点_返回两个有环的链表相交的第一个节点_python实现
一、判断链表是否有环 1、问题描述 给定一个链表,判断其是否有环 2、思路 两个方法: 借助哈希表 不借助hash表 3、python实现 方法一: 遍历链表得到节点 判断该节点是否是哈希表中的某一个key,若不是则加入,若是则返回即为第一个有环的节点 若遍历到最后遇到None,则不存在环 ''' 问题一:判断链表是否有环 ''' # Definition for singly-linke...
2019-11-04 12:17:20
284
原创 牛客网_算法初级班_Lesson3_part2_猫狗队列_转圈打印矩阵_旋转正方形矩阵_之字形打印矩阵_行列都排好序的矩阵中找数
一、猫狗队列 1、问题描述 宠物、狗和猫的类如下: public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } } public class Dog extends Pet { public...
2019-11-02 12:11:12
280
原创 牛客网_算法初级班_Lesson3_part1_数组结构实现栈_数组结构实现队列_特殊栈可以返回栈中最小值_队列结构形成栈_栈结构形成队列_python语言描述
一、实现栈结构 问题描述:用数组结构实现大小固定的栈 如:给定长度为6的数组,形成一个长度为6的栈。限制长度,如果长度超过6给用户报错 1、方法 设置一个指针index指向数组“0号”位,加入元素,index++;弹出元素,index–; 2、python实现 class ArrayStack: ''' 问题一: 数组结构实现栈 ''' def __init...
2019-10-31 19:53:04
223
原创 数据结构与算法_python语言描述_具有基本功能的单链表_带有尾结点引用的单链表_循环单链表_双链表
一、单链表 单链表,实现其基本功能 1.基本功能 判断该单链表是否为空 在单链表的表头添加元素 单链表的弹出操作 在单链表的表尾添加元素 删除表中最后的元素 查询表中是否存在所给定的表元素 打印链表操作 迭代器(好处:如果链表中有多个重复的数时,find操作只能返回第一次遇到的num;而迭代器可以不断返回符合条件的num,直至没有) 2.python实现 class LNode: ''...
2019-10-31 15:55:53
673
原创 牛客网_算法初级班_Lesson2_Part II_完全二叉树转为大根堆heapinsert_原先大根堆经过变化再回到大根堆heapify_堆排序_比较器的实现_相邻两数的最大差值--python语言
一、heapinsert 1.问题描述 数组本质就是完全二叉树,因此完全二叉树只是一种逻辑结构,实际结构其实是数组。那么给定一个数组,如何将其变成大根堆?这就是一个heapinsert过程。 方法: 父结点----(i-1)/2 左孩子-----2i+1 右孩子------2i+2 每从数组里拿出一个元素,就找该元素下标对应的父结点。比较大小,如果大于父结点,则和父结点互换,否则不动。 2.pyt...
2019-10-17 17:52:41
447
1
原创 牛客网_算法初级班_Lesson2_Part I_数组元素与target比较划分区域_荷兰国旗问题_改进后的经典快排_随机快排_python语言描述
一、数组元素与target比较划分区域 1.问题描述 给定一个target(目标值),依次和数组中的每一个数比较,如果小于或者等于target 就放进数组的左端,否则(也就是大于target),放在数组的右端。也就是把数组分成了两部分 2.思路 引入一个指针变量Less,指针变量左边的数全都是小于等于target,否则都放在指针变量的右边,这样既可完成划分。 步骤: 若cur(当前时刻的元素取值...
2019-10-17 15:37:06
320
原创 牛客网_算法初级班_Lesson3_Part I_比较器的实现_python、Java语言描述
一、问题背景 针对计算机的五种基本类型(int、float、double、string、char),各个语言都有自己的一套默认的比较函数(比如 sort函数)。但是在工程上,很多业务场景下需要我们自己定义类,并按照一定顺序排序(比如定义student类,里面有姓名、学号、成绩等等信息)。我们希望可以按照我们想要的方式进行排序(如果我们没有比较器,直接调用sort函数的话要么计算机按照存储地址排序,...
2019-10-15 14:40:52
229
原创 力扣刷题(十七)--排序数组--python语言描述--sortArray
题目描述: 给定一个整数数组 nums,将该数组升序排列。 示例 1: 输入:[5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:[5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 提示: 1 <= A.length <= 10000 -50000 <= A[i] <= 50000 思想: 这道题目就是一个排序题目的练习。这里实现过程我采用的是归并排...
2019-10-05 22:35:55
415
原创 牛客网_算法初级班_Lesson1_Part II_递归求数组最大值_归并排序_小和问题_逆序对问题_python语言描述
一、递归求数组最大值 递归行为就是说自己调用自己,但是它必须有一个离开条件,不然会陷入死循环。 递归的实质就是计算机自己进行压栈,执行到递归的地方则把父行为压进栈中,进而执行子行为;依次反复,直到执行到离开条件为止。 code: def getMax(array, L, R): ''' 利用递归行为:自己调用自己;求出一个数组中的最大值: 右边取得最大值,右边取得最...
2019-10-05 22:06:47
270
原创 剑指offer刷题(一)--二维数组中的查找--python语言描述--Find
开头语: 这篇总结建议和专栏–力扣刷题(十五)还有–力扣刷题(十六)一起阅读,总结。因为力扣刷题(十六)是力扣刷题(十五)的进阶版。而力扣刷题(十六)、力扣刷题(十五)还有剑指offer(一)都是同一类型题目,一起比较记忆事半功倍。十五的条件更苛刻且特殊,因为它规定了每行的第一个整数大于前一行的最后一个整数。而十六并没有规定两行之间彼此的关系。 题目描述: 在一个二维数组中(每个一维数组的长度相同...
2019-09-28 22:29:42
169
原创 力扣刷题(十六)--搜索二维矩阵II--python语言描述--searchMatrix
开头语: 这篇总结建议和专栏–力扣刷题(十五)还有–剑指刷题(一)一起阅读,总结。因为力扣刷题(十六)是力扣刷题(十五)的进阶版。十五的条件更苛刻且特殊,因为它规定了每行的第一个整数大于前一行的最后一个整数。而十六并没有规定两行之间彼此的关系。 题目描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每...
2019-09-28 00:15:23
220
原创 力扣刷题(十五)--搜索二维矩阵--python语言描述--searchMatrix
开头语: 这篇总结建议和专栏–力扣刷题(十六)还有–剑指刷题(一)一起阅读,总结。因为力扣刷题(十六)是力扣刷题(十五)的进阶版。十五的条件更苛刻且特殊,因为它规定了每行的第一个整数大于前一行的最后一个整数。而十六并没有规定两行之间彼此的关系。 题目描述: 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于...
2019-09-28 00:08:43
443
原创 力扣刷题(十四)--罗马数字转整数--python语言描述--romanToInt
题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做...
2019-09-23 14:01:54
383
原创 力扣刷题(十三)--旋转图像--python语言描述--rotate
题目描述: 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ] 示例 2: 给定 m...
2019-09-22 21:13:02
381
原创 力扣刷题(十二)--求众数--python语言描述--majorityElement
题目描述: 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 方法一、 利用while循环,使得重复运行,直到列表同样的数的长度超过了n/2截至。 record_numbers存储原...
2019-09-22 17:00:51
404
原创 力扣刷题(十一)--Excel表列序号--python语言描述--titleToNumber
题目描述: 给定一个Excel表格中的列名称,返回其相应的列序号。 例如, A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: “A” 输出: 1 示例 2: 输入: “AB” 输出: 28 示例 3: 输入: “ZY” 输出: 701 拿到这道题的第一反应是字典,然后一一对应,26个字母一个...
2019-09-22 14:40:07
390
原创 力扣刷题(十)--报数--python语言描述--countAndSay
题目描述: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下: 1 11 21 1211 111221 1 被读作 “one 1” (“一个一”) , 即 11。 11 被读作 “two 1s” (“两个一”), 即 21。 21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。 ...
2019-09-19 15:30:02
262
原创 力扣刷题(九)--寻找旋转排序数组中的最小值--python语言描述--findMin
题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。 示例 1: 输入: [3,4,5,1,2] 输出: 1 示例 2: 输入: [4,5,6,7,0,1,2] 输出: 0 方法一、内置函数 拿到这个题目后的第一反应,是没太get到...
2019-09-19 15:21:52
309
原创 力扣刷题(八)--无重复字符的最长子串--python语言描述--lengthOfLongestSubstring
题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “...
2019-09-16 15:56:22
399
原创 力扣刷题(七)--回文数--python语言描述--IsPalindrome
题目描述: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 解法...
2019-09-16 10:38:25
1960
原创 力扣刷题(六)整数反转--python语言描述--reverse
问题描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 方法一、 将int...
2019-09-14 16:15:33
683
原创 python常用函数(一)
1. 列表 pop()方法 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。 list1 = ['Google', 'Runoob', 'Taobao'] list_pop=list1.pop(1) print "删除的项为 :", list_pop print "列表现在为 : ", list1 以上实例输出结果如下: 删除的项为 : Runoob 列表现在为...
2019-09-13 17:51:38
386
原创 力扣刷题(五)只出现一次的数字--python语言描述--singleNumber
题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 题解一、栈(利用了额外空间) class Solution(object): def single...
2019-09-13 16:57:17
348
原创 力扣刷题(四)买卖股票的最佳时机--python语言描述--maxProfit
问题描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注...
2019-09-13 13:00:41
370
原创 力扣刷题(三)-有效的括号python语言描述-isValid
题目描述: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入...
2019-09-10 16:51:33
832
原创 力扣刷题(二)-两数相加addTwosolution-python语言描述
题目描述: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 关键字:非空,位数,逆序 名词解释: 逆序:比如说两个链表,一个是 2,4,3;另一个是5,6,4;那么可以4100 + ...
2019-09-09 22:38:57
280
原创 vim简单用法
更多细节参照链接:http://c.biancheng.net/vi/ cd /home/stock/tmp 该写法为将路径更改为指定路径 crontab -e 查看已有进程 crontab -i 插入新进程 esc 退出当前编辑进程界面 :wq 保存并退出 :q 不保存并退出 定时运行python程序 值得注意的是:上面的时间是机器时间,且相距北京时间慢8小时 ...
2019-09-09 00:01:31
109
原创 python编程-类的实例化
如下代码: class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ add_tmp = 0 # wheth...
2019-09-08 21:40:56
302
原创 力扣刷题(一)两数之和基于python实现
题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 注意:你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 代码实...
2019-09-08 21:36:22
280
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅