1.判断链表是否有环?(剑指offer)
思路: 快慢指针,快指针每次走两步,慢指针每次走一步,若两指针会相遇则有 环。
2.找出1中环的入口?(剑指offer)
思路:快慢指针同上,相遇后快指针回到头结点,速度变为1,再次相遇的地方就是环的入口。
3.用两个栈实现队列?((剑指offer))
4.反转链表?
思路:头节点为空则返回空,否则定义pre,cur,p,当前节点cur不为空则令p=cur->next; cur->next=pre;
pre=cur; cur=p;
5.TopK问题
7.LeetCode 424,替换后的最长重复字符
8.青蛙跳台阶 Leetcode70
9.第三大的数 Leetcode414
10.分解质因数
11. 力扣698 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。
12. 给定一个01序列,0101110011,以及一个数字k,可以将最多k个0转变为1,问转变之后最长的1的连续序列的长度
14. (剑指offer23)两个链表的交点
思路:若A,B有一个为空返回空,否则设pa,pb分别指向A,B的头结点,然后判断A,B是否指向同一个节点,若为一个节点返回pa否则判断A是否到达表尾,到表尾后则令pa=B的头结点继续遍历,pb同理。若相交最后会到达交点,否则返回空。
15.有效括号序列
思路
将括号序列转化为字符数组保存,依次遍历数组,若为左括号则入栈,若为右括号判断栈是否为空,为空不合法,不为空取出栈顶元素判断是否匹配,不匹配不合法,全部遍历完后判断栈内是否为空,不为空不合法。
16.最长回文子串
思路:中间扩散法
从第一个字符开始对选择的字符左右两个相邻的字符进行比较,如果一样right++,left–,直到不一样,用right-left+1求出长度最后比较,需要注意的是可能有奇数长度和偶数长度两种,如aba于abba都是,所以在判断之前首先从当前位置开始比较右边的与当前位置是否一致如果一致right++下次比较的位置从右边与当前位置不一致的地方开始。同时注意如果剩余的字符串长度小于已知最大长度的一半可以不再比较。