leetcode刷题笔记
1.两数之和。
获得技能:哈希表,c++容器MAP。
1 | class Solution { |
2.链表逆转。(非 力扣 )
1.迭代法
- 需要保存:
- 1.当前节点上一节点
- 2.当前节点下一节点
1 | List Reverse( List L ) |
2.栈
- 两次循环即可
1 | void translateLinklist(Linklist& L) |
3.无重复字符的最长子串。
获得技能:队列,滑动窗口
1 | class Solution { |
4.寻找两个正序数组的中位数。
获得技能:二分查找。
由于数列是有序的,其实我们完全可以一半儿一半儿的排除。假设我们要找第 k
个数,我们可以每次循环排除掉 k/2
个数。
1 | public double findMedianSortedArrays(int[] nums1, int[] nums2) { |
5.最长回文子串
给你一个字符串 s
,找到 s
中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
* 中心扩展
1 | class Solution { |
* 动态规划
思想:如果S[ i , j ]是回文串,那么S[ i-1 , j -1]也是回文串 , 假设
需要注意 : i>j的情况
1 | public String longestPalindrome(String s) { |
6.约瑟夫环问题
- 直接用数组实现
1 |
|
- 循环链表
1 |
|
7.列车调度问题
建立一个数组,当输入一个列车序号时开辟轨道,再输入一个列车序号,在所有轨道中查找比列车序号大的列车序号,替换它,如果没有比它大的,则另开辟一个轨道。用top记录开辟轨道的数量。
1 |
|
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment