- 博客(7)
- 收藏
- 关注
原创 30. Substring with Concatenation of All Words
题意为给定字符串s,以及字符串数组words, 求s中包含words的连接子串(顺序无关)的所有索引。正解:public class Solution { public List<Integer> findSubstring(String s, String[] words) { if(words==null||words.length==0){ r
2017-07-18 07:45:26
206
原创 Remove Duplicates from Sorted List
思路较简单,主要考虑边界情况。 public ListNode deleteDuplicates(ListNode head) { if(head==null) return null; ListNode priorNode=head; ListNode nextNode=head.next; while(nextNode!=n
2017-06-14 23:22:07
158
原创 Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative. 题意:给定一个链表,将链表在从右往左数第k个节点处断开,并将左半截连接在右半截之后,返回第k个基点 tricks 边界值考虑:K非空,但是K有可能大于链表的长度,所以要遍历一遍,将K取余得到一个有效值。既然已经得到链表的长度,则
2017-06-14 23:05:11
236
原创 Remove Nth Node From End of List
Remove Nth Node From End of List 涉及到指针的常见标准化策略:为保证删第一个节点和删中间节点操作一致,新建节点指向head. 间隔n个的元素:两个指针,一个快指针,一个慢指针。在快指针指向队尾时,慢指针应指向目标元素。 本例中,慢指针默认为新建元素,快指针为默认指向头节点,初始使快慢指针相差n个元素,则当快指针指向队尾时,慢指针的下一个元素即为要被删除
2017-06-13 02:38:14
171
1
原创 Merge K Sorted Lists
分析题意:将多个有序链表拼接成一个,思路同拼接两个链表,先比较两个(或k个)链表的表头,最小的表头节点摘下,继续比较,直到所有链表的节点都被摘空为止。基于算法的效率考虑,每次比较k个链表的表头,只有最小的表头节点被拿走,下一次拿该表头节点的下一个节点和其余k-1个比较。此时对k个节点的排序不用堆排序都对不起当年在算法课上猛打瞌睡的自己。 代码如下:/** * Definition for sin
2017-06-09 23:23:01
124
原创 Merge Two Sorted Lists
题目本身比较简单,无非就是对c语言中指针的剪切操作,no trickpublic ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode node=new ListNode(Integer.MIN_VALUE); ListNode head=node; while(l1!=null
2017-06-09 22:58:58
210
原创 Median of Two Sorted Arrays
Median of Two Sorted Arrays计算机中的算法到底研究的是技巧还是一种思维方式。分析算法已知条件如下: - 两个有序数组 - 中位数:奇数取中间值偶数取中间两个数的平均数(浮点型)直接思路public class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) {
2017-06-06 23:35:28
173
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人