摘要:
新建一个链表要方便的多 要注意一下初始的判断条件,并不是 l1 == null || l2 == null, return null这种,是其中一个为空的话,就返回另外一个 阅读全文
摘要:
基础题目 建一个堆栈,对于这个字符串,如果是左括号就放到堆栈里面,如果是右括号,就弹出堆栈里的一个元素,如果此时堆栈是空的,肯定是不匹配的,如果弹出的不匹配,也返回false。做完以后看堆栈是不是正好的空的,如果是空的就返回true,否则就是false。 1 public boolean isVal 阅读全文
摘要:
基础链表操作。 但是居然还是犯了好几个错误。 在链表为一个节点,并且要求删除倒数第一个节点的case里面错了。 我自己的做法是,设置一个假头。 1 public ListNode removeNthFromEnd(ListNode head, int n) { 2 if(head == null) 阅读全文
摘要:
暴力破解 1 public String longestCommonPrefix(String[] strs) { 2 if(strs == null || strs.length == 0) { 3 return ""; 4 } 5 int min = minLen(strs); 6 int cn 阅读全文
摘要:
用two pointers夹逼的方法,刚开始把left和right设置在数组的两端,如果left处比right处矮,那么说明left处是瓶颈,否则就是right处是。 同时维护一个全局的maxArea 1 public int maxArea(int[] height) { 2 if(height 阅读全文
摘要:
更新: 之前那种dp太笨重了有个非常的轻巧的做法,原理都是一样的。 转移方程不变,但是不需要特别的初始化 判断某个格子是不是true,是 1.要么长度小于3,要么dp[start+1][end-1]==true 2.并且s.charAt(start) == s.charAt(end) 判断要不要更新 阅读全文
摘要:
Two pointers 配合 HashSet 相当于控制一个小窗,如果下一个字母是新的字母,那小窗就往右移一格,同时检查一下是不是最大长度,如果下一个字母是有重复的,那么就让小窗的左侧往右移动到第一个不是该字母的地方。 需要注意的是,小窗左侧移动的时候,小窗右侧也要往右边移动一次,不然下一轮检查的 阅读全文
摘要:
没什么特别的。不在原链表上操作,把每一位保存到一个新的链表里面。 程序大概分四段: 1. 当l1和l2都不为空的时候 2. 当l1不为空的时候 3. 当l2不为空的时候 4. 当carry!=0的时候,再建一个新的节点放在末尾 public ListNode addTwoNumbers(ListNo 阅读全文