随笔分类 -  leetcode

1 2 3 4 5 ··· 7 下一页

分类
摘要:一、归并&链表 21.Merge Two Sorted Lists;合并两个有序链表 88.Merge Sorted Array;合并两个有序数组 2.Add Two Numbers;链表大数加法 67.Add Binary;数据大数加法 148.Sort List;链表排序 冒泡、归并 147.I 阅读全文

posted @ 2018-09-09 11:01 二十年后20 阅读(182) 评论(0) 推荐(0) 编辑

41. First Missing Positive
摘要:题目链接 题目大意:给出一个数组,从1开始找出数组中缺失的第一个正数。例子如下: 法一:利用HashSet。将数组中的数都存入set集合中,然后从1开始遍历set集合,一旦不存在则返回。代码如下(耗时7ms): 1 public int firstMissingPositive(int[] nums 阅读全文

posted @ 2018-07-20 11:18 二十年后20 阅读(111) 评论(0) 推荐(0) 编辑

36.Valid Sudoku
摘要:题目链接 题目大意:输入一个含有部分数据的数独数组,查验是否这个数组中的数是否满足数独条件,即行、列、小3*3框没有重复数值。37题是构造数独解。 法一:直接逐一判断即可。代码如下(耗时20ms): 1 public boolean isValidSudoku(char[][] board) { 2 阅读全文

posted @ 2018-07-20 10:07 二十年后20 阅读(152) 评论(0) 推荐(0) 编辑

24.Swap Nodes in Pairs
摘要:题目链接 题目大意:交换单链表中的相邻结点。例子如下: 法一:交换两个相邻的值,不交换相邻结点。代码如下(耗时3ms): 1 public ListNode swapPairs(ListNode head) { 2 ListNode cur = head; 3 while(cur != null & 阅读全文

posted @ 2018-07-19 11:30 二十年后20 阅读(147) 评论(0) 推荐(0) 编辑

23.Merge k Sorted Lists
摘要:题目链接 题目大意:合并多个有序链表成为一个有序单链表。21题是合并两个有序链表。例子如下: 法一(借鉴):利用优先队列构造最小堆,首先将k个链表的首结点入堆,构建初始堆,然后取出堆顶元素,即最小的元素,加入结果链表中,然后将堆顶元素的下一个节点加入堆中,再取出堆顶元素,继续操作,这样就保证了每次都 阅读全文

posted @ 2018-07-19 10:36 二十年后20 阅读(169) 评论(0) 推荐(0) 编辑

19.Remove Nth Node From End of List---双指针
摘要:题目链接 题目大意:删除单链表中倒数第n个节点。例子如下: 法一:双指针,fast指针先走n步,然后slow指针与fast一起走,记录slow前一个节点,当fast走到链表结尾,slow所指向的指针就是所找的节点。代码如下(耗时8ms): 1 public ListNode removeNthFro 阅读全文

posted @ 2018-07-17 11:47 二十年后20 阅读(119) 评论(0) 推荐(0) 编辑

18.4Sum
摘要:题目链接 题目大意:与3sum类似,只是这里是四个数之和等于target,找出所有满足条件的组合。 法一:三层循环,使用3sum的方法,只是外面再嵌套一层循环即可。注意去重。代码如下(耗时43ms): 1 public List<List<Integer>> fourSum(int[] nums, 阅读全文

posted @ 2018-07-17 11:21 二十年后20 阅读(109) 评论(0) 推荐(0) 编辑

16.3Sum Closest
摘要:题目链接 题目大意:与15题类似,只是这里求的不是三个数之和等于target,而是三个数之和最接近target。 法一(借鉴):记录与target相差的绝对值最小值,然后更新记录。先排序,两层循环,外层循环遍历取一个数,内层循环两指针找合适的值。代码如下(耗时13ms): 1 public int 阅读全文

posted @ 2018-07-17 10:57 二十年后20 阅读(110) 评论(0) 推荐(0) 编辑

45.Jump Game II---贪心---2018大疆笔试题
摘要:题目链接 题目大意:与55题类似,只是这里要求出跳数。 法一(借鉴):贪心。cur表示当前能到达的最远距离,pre表示上一次能到达的最远距离,每到一个位置更新一次最远距离cur,如果当前位置超过了上一次能到达的最远距离,则更新跳数和上一次能到达的最远距离。代码如下(耗时6ms): 1 public 阅读全文

posted @ 2018-07-11 15:51 二十年后20 阅读(204) 评论(0) 推荐(0) 编辑

55.Jump Game---dp
摘要:题目链接 题目大意:给一个数组,第i个位置的值表示当前可以往前走的最远距离,求从第一个位置能否顺利走到最后一个位置。例子如下: 法一(借鉴):DP,dp[i]表示从上一个位置走到当前位置时,剩余的可以往前走的距离。dp公式是:dp[i]=max(dp[i-1],nums[i-1])-1。代码如下(耗 阅读全文

posted @ 2018-07-11 09:57 二十年后20 阅读(172) 评论(0) 推荐(0) 编辑

81.Search in Rotated Sorted Array II---二分变形
摘要:题目链接 题目大意:与33题类似,只是这里数组中有重复数值。 法一:解法与33题类似,只是这里要处理1,3,1,1,1这种情况,即有重复值时,mid与left和right都相等时,可以采用right--的方式错开相等值再比较。代码如下(耗时2ms): 1 public boolean search( 阅读全文

posted @ 2018-06-22 11:21 二十年后20 阅读(130) 评论(0) 推荐(0) 编辑

48.Rotate Image
摘要:题目链接 题目大意:顺时针一次旋转矩阵。例子如下: 法一:新开辟一个数组空间,将每一行的数值赋值给每一列。代码如下(耗时3ms): 1 public void rotate(int[][] matrix) { 2 int[][] res = new int[matrix.length][matrix 阅读全文

posted @ 2018-06-22 10:43 二十年后20 阅读(137) 评论(0) 推荐(0) 编辑

89.Gray Code
摘要:题目链接 题目大意:格雷码。 法一(借鉴):直接转换为格雷码。代码如下(耗时1ms): 1 public List<Integer> grayCode(int n) { 2 List<Integer> res = new ArrayList<Integer>(); 3 int num = (int) 阅读全文

posted @ 2018-06-19 16:58 二十年后20 阅读(131) 评论(0) 推荐(0) 编辑

33.Search in Rotated Sorted Array---二分变形---《剑指offer》面试题8
摘要:题目链接 题目大意:在一个旋转数组中,判断给定的target是否存在于该旋转数组中。数组中没有重复数值。例子如下: 法一:二分。确定中间元素之后,就要判断下一步是遍历左数组还是遍历右数组。如果左数组有序,且target在左数组范围内,则遍历左数组,否则遍历右数组;如果右数组有序,且target在右数 阅读全文

posted @ 2018-06-19 11:14 二十年后20 阅读(122) 评论(0) 推荐(0) 编辑

75.Sort Colors
摘要:题目链接 题目大意:将颜色排序,将同颜色的放置在相邻的位置,0表示red,1表示white,2表示blue,即最后的排序颜色应该是0,1,2。(最好能实现遍历一遍,常数空间) 法一:直接用库函数排序。o(nlgn)。代码如下(耗时1ms): 1 public void sortColors(int[ 阅读全文

posted @ 2018-06-19 10:02 二十年后20 阅读(102) 评论(0) 推荐(0) 编辑

80. Remove Duplicates from Sorted Array II
摘要:题目链接 题目大意:与26比较。删除数组中重复两次以上的数,剩下的数只有这种形式{1,1,2}。 法一:将重复2次以内的数都保留,重复2次以上的数都跳过删除,其中第一次遇见没有重复的数时,应该更新计数器。代码如下(耗时2ms): 1 public int removeDuplicates(int[] 阅读全文

posted @ 2018-06-14 11:26 二十年后20 阅读(110) 评论(0) 推荐(0) 编辑

82.Remove Duplicates from Sorted List II
摘要:题目链接 题目大意:删除有序单链表中所有重复的数字,将非重复的数字留下来。与83有点 区别。 法一:记录前面的重复节点,将当前结点与下一个节点和上一个重复节点进行比较,(因为可能出现3->3->3的情况),如果都不重复,则将节点保留,其他重复节点都删除。代码如下(耗时1ms): 1 public L 阅读全文

posted @ 2018-06-14 11:00 二十年后20 阅读(141) 评论(0) 推荐(0) 编辑

83.Remove Duplicates from Sorted List
摘要:题目链接 题目大意:删除有序单链表中重复的数字,使得剩下的数字都唯一。例子如下: 法一:利用尾插,如果结点非重复则加入新链表结点。代码如下(耗时2ms): 1 public ListNode deleteDuplicates(ListNode head) { 2 if(head == null) { 阅读全文

posted @ 2018-06-14 10:17 二十年后20 阅读(112) 评论(0) 推荐(0) 编辑

96. Unique Binary Search Trees
摘要:题目链接 题目大意:1~n的自然数,可以组成多少个不同的二叉搜索树。例子如下: 法一:卡特兰数。通项公式C(2n, n)/(n+1)=C(2n, n) - C(2n, n+1)。代码如下(耗时0ms): 1 public int numTrees(int n) { 2 //卡特兰数 3 //C(2n 阅读全文

posted @ 2018-06-02 11:27 二十年后20 阅读(132) 评论(0) 推荐(0) 编辑

92.Reverse Linked List II
摘要:题目链接 题目大意:翻转链表中从m到n的结点,其他位置保持不变。 法一:与61类似,只是61是轮询翻转,而这题是抽一部分翻转,所以可以将链表分成三部分,前面,中间,后面,对前面和后面只需要遍历即可,对中间则进行翻转。代码如下(耗时4ms): 1 public ListNode reverseBetw 阅读全文

posted @ 2018-06-02 10:43 二十年后20 阅读(106) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示