![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题
文章平均质量分 75
schedule list
这个作者很懒,什么都没留下…
展开
-
(剑指offer)python刷leetcode(2)
文章目录剑指offer39:数组中出现次数超过一半的数剑指offer40:最小的K个数剑指offer41:数据流中的中位数剑指offer42:连续子数组的最大和剑指offer39:数组中出现次数超过一半的数题目已经说了,出现次数超过一半,说明一半的数是同一个数,最简单的方法就是排序后的数组中点就是这个数class Solution: def majorityElement(self, nums: List[int]) -> int: nums.sort()原创 2021-01-27 17:43:21 · 252 阅读 · 1 评论 -
(剑指offer)刷LeetCode(1)
文章目录剑指offer04:二维数组中的查找剑指offer05:替换空格剑指offer06:从尾到头打印链表剑指offer07:重建二叉树剑指offer09:用两个栈实现队列剑指offer11:旋转数组中的最小数字剑指offer04:二维数组中的查找思考过程:首先这个数组有一个特征就是,从左到右,从上到下是递增的,第一反应就是从左上角开始找,但是判定过程中就会遇到两条路都能走的情况:我是往上走,还是往右走?没有一个明显的判定条件来决策行动。所以换个思路,从右上角开始查找:如果当前元素值比target原创 2021-01-18 21:54:20 · 147 阅读 · 0 评论 -
leetcode(python)——169多数元素、200岛屿数量
题号169方法1:排序法对数组排序,重复的元素会排在一起,题目定义的多数元素为数组中出现次数 大于 ⌊ n/2 ⌋ 的元素,对排序后的数组求中间元素值,这个中间元素就是多数元素class Solution: def majorityElement(self, nums: List[int]) -> int: nums.sort() left = 0 right =len(nums)-1 mid = (left+right)/原创 2021-01-13 21:41:43 · 98 阅读 · 0 评论 -
leetcode(python)——56合并区间,57插入区间
题号56考虑两个问题:1.怎么判断有没有重叠?令前面的是p,后面的是q,观察p的结束结点和q的开始结点即可区间有重叠,需要合并p[end]>q[start];区间端点重叠,需要连接p[end]=q[start];区间无重叠,无操作,p[end]<q[start].2.怎么合并区间?如果有重叠,比较两个区间的结束结点,谁大用谁class Solution: def merge(self, intervals: List[List[int]]) -> List[List原创 2021-01-11 21:56:11 · 139 阅读 · 0 评论 -
LeetCode(Python)哈希表题——217存在重复元素、49字母异位词、560和为K的子数组
题号217方法一:对数组进行排序,然后遍历数组,遇到等于前一个元素的就返回,定义一个pre记录前一个元素的值class Solution: def containsDuplicate(self, nums: List[int]) -> bool: if len(nums) == 0 : return False nums.sort() pre= nums[0] for i in range (1,le原创 2021-01-08 16:29:30 · 194 阅读 · 0 评论 -
LeetCode(Python)链表题——206翻转链表、21合并有序链表、24两两交换链表中的节点
题号206我们一直用的链表插入都是尾插法,头插法可以逆序实现.秉承先连后断,利用头插法插入Q,q.next = p.next; p.next=qclass Solution: def reverseList(self, head: ListNode) -> ListNode: newlist = ListNode() #一个新链表头结点 p = newlist #P指向新链表 q= head #q指向旧链表原创 2021-01-08 15:36:44 · 117 阅读 · 0 评论 -
LeetCode(Python)数组题——268丢失的数字、78子集、90子集
题号268方法一:排序。给一个数组,数组是乱序的,题目的意思是指定了数组元素的个数也限制了数组元素的取值范围找不在里面的元素。例如n=3,取值只能从0,1,2,3里面取,可以想到对其先排序,然后再遍历,如果遇到不存在的就输出。class Solution: def missingNumber(self, nums: List[int]) -> int: nums.sort() #因为题干要求了空间,所以没有新建一个数组 for i in range(le原创 2021-01-07 21:11:16 · 187 阅读 · 0 评论 -
leetcode刷题预备Python知识——基本数据类型(number,list,tuple,set,dictionary,string)
文章目录一、number数字二、list列表三、tuple元组四、set集合五、dictionary字典六、string字符串一、number数字在Python中number长这个样子:1或1.5或False是单一的值。刷题常备number类型数字类型intfloatbool举例10.5True刷题常备number运算操作运算+-*///%举例1+2=32-1=11*1=13/2=1.53//2=13/2=0原创 2021-01-06 11:28:09 · 433 阅读 · 0 评论 -
Leetcode(python)——24两两交换链表中的结点,27移除元素,35搜索插入位置,49字母异位词分组
题号24原链表:有一个head指针指向表头元素:定义一个新的链表res,让其next指针指向old链表,并定义一个指向新链表表头元素的指针Cur:对new链表进行元素交换:首先定义一个指向head.next的指针nxt一个指向nxt.next的指针temp新链表的头指针cur的next指向头结点的next,即nxt;nxt的next指向head;经过上面步骤,链表被划分成了两部分(因为2,3之间的链被断开了)连接断链:head.next=temp第一波的交换完成。更新交换完位原创 2021-01-05 19:46:49 · 102 阅读 · 0 评论 -
Leetcode(python)——两数之和,两数相加,有效括号,合并有序链表
题号1:两数之和1.暴力_双指针i指向value:2时,j依次指向7,11,15,显然这个例子在j指向7的时候就已经找到了target,如果target为18:那么蓝色指针需要遍历完7—>15位置的元素,i指针需要移动到指向7,j指针需要从11开始进行第二轮比较遍历。以此类推。设置两个指针,嵌套两层循环,当指针指向i时,j指针寻找第i+1到数组最后元素的位置,并计算i和j所指的对应元素之和,满足target则返回下标;如果没有,i移动到下一个位置,j依然从i的后面位置开始遍历直至找到或遍历完整原创 2021-01-04 15:27:17 · 189 阅读 · 0 评论