摘要:
Algorithm "判断子序列" What 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。如,"ace"是"abcde"的一个子序列,而"aec"不是)。 How 可以用贪心算法,遍历母串t,时间复杂度是O(N)。定义两个串的索引,如果发现t的索引和子串s的索引值相等,移动子串s的索引 阅读全文
摘要:
Algorithm "77. 组合" What 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 How 利用递归的思想,当凑够k个数时,就回退回去,remove掉一个数,在进行组合 。 Key Codes class Solution { public List co 阅读全文
摘要:
Algorithm " 字典序排数" What 给定一个整数n,返回从1到n的字典顺序,例如,给定 n =13,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] ,尽可能的优化算法的时间复杂度和空间复杂度。 How 问题的关键在于理清“词典顺序”是什么样的,词典顺序就是10比2靠 阅读全文
摘要:
Algorithm "两数相加" What 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 How 两个链表长度相同的部分,对位相加,注意需要还需要加上上一次相加的进位值。得到结果后,将个位数存入结果链表中,十位数等待下一次相加使 阅读全文
摘要:
Algorithm "最长有效括号" What 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 How 这里可以用栈来求解,需要定义个start变量来记录合法括号串的起始位置,我们遍历字符串,如果遇到左括号,则将当前下标压入栈,如果遇到右括号,且当前栈为空,则将下 阅读全文
摘要:
Algorithm "删除链表的倒数第N个节点" What: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 How: 这是一道典型的利用双指针法解题。首先让指针first指向头节点,然后让其向后移动n步,接着让指针sec指向头结点,并和first一起向后移动。当first的ne 阅读全文
摘要:
Algorithm "5. Longest Palindromic Substring" What 给定一个字符串s,找到s中最长的回文子字符串。 给定s的最大长度为1000。 How 这是一道比较经典的求最大回文子串的题目,算法也有多种,可能一开始都会想到用暴力法,找出所有子串然后进行判断,显然这 阅读全文
摘要:
Algorithm "4. Median of Two Sorted Arrays" What 两个排序数组的中位数 How 两个数组合并到同一个数组,然后进行排序取中间值即可 Key Codes class Solution { public double findMedianSortedArra 阅读全文