
LeetCode
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode 268. Missing Number
题目描述:给出一个数组,包含0…n的值其中一个缺失,找出缺失的那一个,要求线性时间,常数空间。题目链接:Leetcode 268. Missing Number用位^操作记录0…n 再遍历^ 然后两个异或得出结果。或者用等差数列求和。def missingNumber(self, nums): n = len(nums) return n * (n+1) / 2 - ...原创 2019-01-26 15:42:04 · 174 阅读 · 0 评论 -
Leetcode 48. Rotate Image
题目描述:旋转90度顺时针矩阵,并且原地修改。题目链接:Leetcode 48. Rotate Image思路:找到矩阵坐标与左边之间的关系,并进行交换,如图。一层一层这样的交换下去就可以了。如果n x n则层数就是n//2,列的j的选择就是j<n-i 看是在第几层。当然这道题也可以有很多取巧的方式例如先reverse然后再进一步处理。class Solution: ...原创 2019-02-05 10:19:15 · 236 阅读 · 0 评论 -
Leetcode 54. Spiral Matrix
题目描述:按照螺旋顺序打印矩阵。题目链接:Leetcode 54. Spiral Matrix思考思路:就是矩阵的一个搜索遍历,用到思想就是要dx\dy 来控制方向,正如 (0,0,-1,1)这样的方向选择,就是选择不同方向,要思考的就是什么时候转变方向。代码如下class Solution(object): def spiralOrder(self, matrix): ...原创 2019-02-05 10:20:24 · 223 阅读 · 2 评论 -
Leetcode 59. Spiral Matrix II
题目描述:螺旋填充矩阵nxn 用1-n**2的数来填充。题目链接:Leetcode 59. Spiral Matrix II思路:参照之前打印的思路,此时用dx,dy 的交替变换表示方向,1-n来填充,利用是否为0来判断是否需要转换方向。代码如下class Solution: def generateMatrix(self, n): """ ...原创 2019-02-05 10:36:00 · 144 阅读 · 0 评论 -
Leetcode 216. Combination Sum III
题目描述:找到所有满足要求的组合,且不能重复,答案不重复,每个组合数字不重复。题目链接:Leetcode 216. Combination Sum III思路:深度优先搜索,列出所有组合。(没有超时)利用排序来去重。代码如下:class Solution: def combinationSum3(self, k, n): """ :type k...原创 2019-01-23 16:29:21 · 157 阅读 · 0 评论 -
Leetcode 217. Contains Duplicate
题目描述:查看数组是否有重复题目链接:217. Contains Duplicate代码如下:class Solution: def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ return l...原创 2019-01-23 16:38:55 · 159 阅读 · 0 评论 -
Leetcode 219. Contains Duplicate II
题目描述:查看数组是否有重复且下标距离最大k.题目链接:Leetcode 219. Contains Duplicate II代码如下:class Solution: def containsNearbyDuplicate(self, nums, k): dic = {} for i, v in enumerate(nums): ...原创 2019-01-23 16:57:38 · 127 阅读 · 0 评论 -
Leetcode 1. Two Sum
题目描述:给定一个列表,返回一个数组中两个数相加为target的下标索引。题目链接:Leetcode 1. Two Sum开始我的思路是先排序,然后双指针向中间移动,然后记录此时的值,再到原数组去寻找对应值下标注意处理相同值的情况。正确的思路就是利用hashmap来记target-nums[idx]当出现的数在哈希表内时,证明已经找到了结果了。一般数组的题目都是用哈希表空间换时间的思...原创 2019-02-22 15:18:00 · 141 阅读 · 0 评论 -
Leetcode 2. Add Two Numbers
题目描述:给定两个链表,返回链表相加的结果,head是个位数,链位是高位。题目链接:Leetcode 2. Add Two Numbers链表的操作真的很简单了,按照外部排的思想,设置carrier位,看是否需要进位,然后逐位相加,看是否需要进位。代码如下import java.util.Arrays;class Solution { public int[] twoSum...原创 2019-02-22 15:18:45 · 153 阅读 · 0 评论 -
Leetcode 3. Longest Substring Without Repeating Characters
题目描述:找出一个子串无重复字符,使其长度最大,返回最大长度。题目链接:Leetcode 3. Longest Substring Without Repeating Characters这种题刚开始觉得很简单,但是仔细考虑实际就是一个滑动窗口的题目,或者说是一个单调队列的题目吧,记录一个队列,当某个字符再次出现的时候(且队列中有此字符)就不断弹出队头,也就是重复元素的左边元素全部抛弃,...原创 2019-02-22 15:22:56 · 112 阅读 · 0 评论 -
Leetcode 215. Kth Largest Element in an Array
题目描述:返回第K大的数字。Leetcode 215. Kth Largest Element in an Array思路:堆排,建立大顶堆,从小到大排序,找到第K大的。初步思路要有heapfy函数以及建堆函数。len全局长度是len 然后整除 // 然后left +1 +2 下标0开始。代码如下:class Solution: def buildMaxheap(self,a...原创 2019-01-23 15:57:07 · 141 阅读 · 0 评论 -
Leetcode 79. Word Search
问题描述:在图中搜索给定单词,如果存在就返回True否则为False.题目链接:Leetcode 79. Word Search思路:dfs搜索,一旦不符合条件就退出,直到符合条件。有矩阵的题目,要么是利用dfs、bfs遍历、要么就是动态规划找出递推条件。考虑遍历去重,visited、边界问题、合理剪枝,一旦达到目的就暂停。代码如下class Solution: def ex...原创 2019-01-23 15:02:09 · 143 阅读 · 0 评论 -
Leetcode 201. Bitwise AND of Numbers Range
题目描述:返回一个[m,n]的逻辑与的结果。题目链接:Leetcode 201. Bitwise AND of Numbers Range题目思路第一反应就是一个列表,然后reduce,想不到在8255的时候超时了0-2^31。正确思路:这种对位操作,要么左移,要么右移,有么要看最高位,要么要看最低位,如何置出某个数字中特定的位是需要技巧的,看到32位想到mask 11111......原创 2019-01-22 10:16:07 · 175 阅读 · 0 评论 -
Leetcode 202. Happy Number
题目描述:查看某个数字是否happy number,即所有个、十、百、XXX的平方加起来和最终是否能为1.Leetcode 202. Happy Number**思路:**本题主要是考察对某个数字取个位、十位、百位的技巧,就是不断对10求余数,然后n每次整除10,在LSD基数排序(要知道最高位数)中也需要用这个来置位比较代码如下:class Solution: def is...原创 2019-01-22 10:37:01 · 110 阅读 · 0 评论 -
Leetcode 203. Remove Linked List Elements
题目描述:去除链表中值等于给定值得节点,返回一个链表。题目链接:Leetcode 203. Remove Linked List Elements思路:没啥好说的,断链操作。主要是val在第一个元素的时候考虑,快慢指针的条件是while p and p.next这个条件不错。这个逻辑还是比较凌乱,要是指示一个prev、一个dummy.next 会更好。# Definition fo...原创 2019-01-22 10:54:23 · 153 阅读 · 0 评论 -
Leetcode 234. Palindrome Linked List
题目描述:判断一个链表是否为回文链表。题目链接:234. Palindrome Linked List要求O(1)空间,线性时间,那么想到一个快慢指针 然后记录前半段的val,然后利用slow向后逐个比较。栈,仍然占用了大量的空间。最重要的是,当还有fast的时候,但是没有fast.next代表逐个为奇数,于是slow还要向前移动一个,这时slow是没有人与之匹配的。想到异或有记忆功...原创 2019-01-22 11:45:31 · 132 阅读 · 0 评论 -
Leetcode 876. Middle of the Linked List
问题描述:返回中间节点。链表的()题目链接:Leetcode 876. Middle of the Linked List快慢指针法,没有什么好说的。代码如下# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# ...原创 2019-01-22 11:59:49 · 122 阅读 · 0 评论 -
Leetcode 204. Count Primes
判断小于n的数中有多少个素数?埃拉托斯特尼筛法题目链接:Leetcode 204. Count Primes代码如下:class Solution: def countPrimes(self, n): """ :type n: int :rtype: int """ ans = 0 ...原创 2019-01-22 14:24:30 · 161 阅读 · 0 评论 -
LeetCode 208. Implement Trie (Prefix Tree)
题目描述:实现Trie树的查找、查找前缀、插入等操作。题目链接:LeetCode 208. Implement Trie (Prefix Tree)代码如下:class Trie: def __init__(self): """ Initialize your data structure here. """ s...原创 2019-01-22 16:27:40 · 394 阅读 · 0 评论 -
Leetcode 211. Add and Search Word - Data structure design
题目描述:实现一个trie树使其支持正则.搜索。Leetcode 211. Add and Search Word - Data structure design思路,其实就是trie树考虑.字符的时候进行搜索,利用深度优先,找到符合的情况,当遇到.的时候遍历其所有子节点(除is_word)除外。然后如果找到就返回True 如果找不到就是不做任何修改,在循环最后返回False.可以设立一...原创 2019-01-23 13:54:00 · 179 阅读 · 0 评论 -
Leetcode 212. Word Search II
题目描述:找出图中所包含的单词列表,其若在给定的words中的话,相当于Word Search 的列表版本。题目链接:212. Word Search II思路,就是先对列表建立trie树,然后搜索图中每个可能,对其进行搜索trie树,如果达到word,就保存其结果入ans代码如下:class Trie: def __init__(self,words): s...原创 2019-01-23 14:39:01 · 183 阅读 · 0 评论 -
Leetcode 24. Swap Nodes in Pairs
题目描述:交换两两链表中的节点。题目链接:Leetcode 24. Swap Nodes in Pairs这个题目的难点在于要记录前面的信息,故建一个dummy结点来记录当前需要交换两个点的前驱。然后不断更新就可以了。代码如下/** * Definition for singly-linked list. * public class ListNode { * int ...原创 2019-02-27 15:20:35 · 149 阅读 · 0 评论 -
Leetcode 25. Reverse Nodes in k-Group
题目描述:就是在前一题翻转2个链表节点的题目上变成翻转k个位置。题目链接:Leetcode 25. Reverse Nodes in k-GroupExample:Given this linked list: 1->2->3->4->5For k = 2, you should return: 2->1->4->3->5For...原创 2019-02-27 16:35:46 · 211 阅读 · 0 评论 -
Leetcode 26. Remove Duplicates from Sorted Array
题目描述:给定一个排序了的数组,找出其中不重复的数组并返回unique的个数,然后原地修改数组让数组最前面为各个唯一数。题目链接:Leetcode 26. Remove Duplicates from Sorted ArrayGiven nums = [0,0,1,1,1,2,2,3,3,4],Your function should return length = 5, with ...原创 2019-02-27 16:52:32 · 218 阅读 · 0 评论 -
Leetcode 15. 3Sum
题目描述:找出任意三个数和为0的子集合,并列出出来,不可有重复。题目链接:Leetcode 15. 3Sum用递归的做法在31就超时了,一共313个case。一般数组的题目要想加速 就要额外空间 hashmap做记忆或者两个指针的办法,一定要学会转化问题。待定一个数 找这个数之后的数组所有不重复两个数相加和为此数的组合。如果sum改成其他的数 只需要把求fix的步骤改一下就好了。...原创 2019-02-24 15:33:56 · 157 阅读 · 0 评论 -
Leetcode 18. 4Sum
题目描述:找出数组中任意4个数和为target的组合,不得重复。题目链接:Leetcode 18. 4Sum思路:基于3Sum做待定,相当又套了一层循环。当然,也可以暴力列举 3 3 个的情况来达到目的。代码如下// Author: Huahuaclass Solution {public: vector<vector<int>> fourSum(...原创 2019-02-24 16:45:32 · 126 阅读 · 0 评论 -
Leetcode 16. 3Sum Closest
题目描述:给出一个target找出数组中3个元素和最接近target的和,并返回其和值。题目链接:16. 3Sum Closest这个题跟3Sum很像,只不过要求target最接近,那么我在每次更新的时候就保留和值就可以了。代码如下class Solution: def threeSumClosest(self, nums: List[int], target: int) -...原创 2019-02-24 16:56:54 · 142 阅读 · 0 评论 -
Leetcode 19. Remove Nth Node From End of List
题目描述:删除从尾节点数其的第n个节点,并返回删除后的头结点。题目链接:Leetcode 19. Remove Nth Node From End of List链表的问题只要用快慢指针+翻转操作+成环重头跑,基本能解决,注意利用dummy等辅助指针指向下一个头呀之类的。这个题目让快指针先跑n次,然后快慢一起跑,当快指针到达结尾的时候,慢指针达到要删除节点的前一个节点。代码如下# ...原创 2019-02-24 17:08:40 · 148 阅读 · 0 评论 -
Leetcode 260. Single Number III
题目描述:找出一个数组中仅仅出现1次的两个数字,其他数字都出现了2次。题目链接:Leetcode 260. Single Number III思路:这个跟第一题 136很相似,只不过这里面有2个出现一次的数字,那题可以用摩尔投票法,也可以用异或相同为0的记录法。这里就是要找出一个区分位,来区分不同的结果,这个区分就是diff参见下面解释:这道题是之前那两道 Single Numbe...原创 2019-02-20 14:47:19 · 148 阅读 · 0 评论 -
Leetcode 20. Valid Parentheses
题目描述:返回一个字符串是否符合括号匹配。({)}不符合,空为True.题目链接:Leetcode 20. Valid Parentheses思路就是用栈,弹栈压栈的判断就可以了。代码如下import java.util.HashMap;import java.util.Arrays;import java.util.LinkedList;class Solution { ...原创 2019-02-26 17:17:20 · 196 阅读 · 0 评论 -
Leetcode 21. Merge Two Sorted Lists
题目描述:合并两个有序链表,返回一个新链表。题目链接:Leetcode 21. Merge Two Sorted Lists就是外排思想,最后考虑长度较长的一方,直接拼接原链,不用new LISTNODE。代码如下/** * Definition for singly-linked list. * public class ListNode { * int val; ...原创 2019-02-26 17:37:09 · 221 阅读 · 0 评论 -
Leetcode 22. Generate Parentheses
题目描述:给定一个数字n生成长度为n的合法的括号字符串。题目链接:Leetcode 22. Generate Parentheses这个题目一看用递归,但是怎么剪枝呢?就是(与)的关系,右括号一定不能大于左括号数,最终两个数一定相等,左右括号数各为一半,因为只有一种括号,所以不用考虑([)]这种情况。代码如下class Solution { public List<S...原创 2019-02-26 19:10:36 · 160 阅读 · 0 评论 -
Leetcode 23. Merge k Sorted List
题目描述:合并k个有序链表。题目链接:Leetcode 23. Merge k Sorted List思路就是调用合并两个有序链表的程序,不断调用直到最后但是这个算法复杂度貌似比较大。事实上一看这样有序的东西一般都是二分的思路,要么二分查找,要么二分定位合并,这里就是二分归并。但是我最喜欢的还是优先级队列的做法,维护一个各链表顶点的优先级队列,每次取出最小并压入取出的下一个节点。(美妙...原创 2019-02-27 12:54:18 · 209 阅读 · 0 评论 -
Leetcode 14. Longest Common Prefix
题目描述:找各个字符串最长前缀,返回。题目链接:Leetcode 14. Longest Common Prefix构建一个字典树,然后遍历到某个点下有多个孩子,则该点为最长前缀。但是建树的开销就很大了,再加上遍历查找的话更大,倒不如随便选一个word然后逐位比较直至没有共同点位置。代码如下class Solution { public String longestCom...原创 2019-02-24 13:45:01 · 191 阅读 · 0 评论 -
Leetcode 13. Roman to Integer
题目描述:罗马数字转换成整数。题目链接:Leetcode 13. Roman to Integer按照整数转罗马数字的套路,罗马数字只需要构建一个字典存储值,然后查看小的是否在大的前面,是的话就-不是的话就+。代码如下import java.util.HashMap;class Solution { public int romanToInt(String s) { ...原创 2019-02-24 13:15:26 · 160 阅读 · 0 评论 -
Leetcode 27. Remove Element
题目描述:移除数组中数位val的元素,并返回一个长度,前长度个元素不包括该元素val.题目链接:Leetcode 27. Remove Element思路和前面一题的思路一样,那就是判断是否相等,然后从0下标开始置位移动。代码如下class Solution { public int removeElement(int[] nums, int val) { i...原创 2019-02-27 16:58:08 · 185 阅读 · 0 评论 -
Leetcode 28. Implement strStr()
题目描述:实现一个函数,能匹配字符串,如果匹配成功返回第一次出现的index,失败返回-1,如果匹配串长度为0返回0.题目链接:Leetcode 28. Implement strStr()KMP算法,根据needle求出next数组,然后利用next数组的信息进行匹配,移动模式串来匹配,每当失配就移动模式串,如果模式串回到了-1也就是第一个位置,那么相应的主串也移动一位进行比较即可。...原创 2019-02-27 17:16:37 · 165 阅读 · 0 评论 -
Leetcode 4. Median of Two Sorted Arrays
题目描述:找出两个有序数组的中位数,两个有序数组不同时为空。题目链接:Leetcode 4. Median of Two Sorted Arrays这个是就是归并排序归并的部分,很经典。利用外部排序先得出结果,然后再求中位数,当然下面开一个新的那么大的数组是没有必要的。代码如下class Solution { public double findMedianSortedA...原创 2019-02-23 12:00:17 · 142 阅读 · 0 评论 -
Leetcode 5. Longest Palindromic Substring
题目描述:找出最长回文子串(LPS)题目链接:Leetcode 5. Longest Palindromic Substring这个问题目前为止看到3个想法:1、马拉车算法巧妙的O(n)算法,分情况讨论,利用回文的对称性来更新结果2、动态规划算法(d[i…j])是否为回文,然后2层循环3、KMP利用最长前缀匹配算法来做。4、暴力搜索(主要是穷举子串、子数组的训练)参考链接处有...原创 2019-02-23 12:36:29 · 320 阅读 · 0 评论 -
Leetcode 6. ZigZag Conversion
题目描述:之字打印出字符串,并返回结果。题目链接:Leetcode 6. ZigZag Conversion思路就是初始化n行字符串,然后像搜索一样一个上一个下去搜索。代码如下class Solution(object): def convert(self, s, numRows): """ :type s: str :type...原创 2019-02-23 13:33:07 · 159 阅读 · 0 评论