Yuliang Feng
Yuliang Feng
> 可以不需要 dead 这个哈希集合,可以直接将这些元素初始化到 visited 集合中,效果是一样的,可能更加优雅一些。 合并后的代码如下: ```java class Solution { public int openLock(String[] deadends, String target) { Set visited = new HashSet(); for(String s:deadends) visited.add(s); Queue q = new...
贪心解法后一个返回值可以直接返回 `return start;`。 因为start的初始值为0,若初始值为0不满足,后面也不会出现 `start == n` 的情况。
Java版本: ```java class Solution { List res; public List generateParenthesis(int n) { res = new ArrayList(); backtrack(new StringBuilder(),n,n); return res; } private void backtrack(StringBuilder sb,int cntl,int cntr){ if(cntr
142.环形链表II https://leetcode-cn.com/problems/linked-list-cycle-ii/solution/kuai-man-zhi-zhen-shu-xue-tui-dao-by-yuhhen/ 这个数学证明比较好。
@yzw-Joey The layers will be decrease when you find other nodes in the union.
```java private int find(int x) { while (parent[x] != x) { // 进行路径压缩 parent[x] = parent[parent[x]]; x = parent[x]; } return x; } ``` 东哥这种路径压缩可以在多数条件下保证树的高度不会太高(也就是查找任意节点的根节点的时间复杂度为 `O(1)`)。 但是想上面 @MrHedwig 哥举的这种特殊情况,就会导致树的高度逐渐增长。 在...
@labuladong 确实,没办法解决那种特殊情况的问题。不过这个压缩效果会好一点。
@labuladong 这个递归和迭代不太一样,东哥你写的迭代,是在从当前结点到根结点遍历的过程中,所有遍历的到的结点的父节点都指向其祖先(爷爷)结点;那个递归是路径上的所有结点的父节点都设置为根结点。
有关位运算的知识涉及的都是计算机组成原理课程的内容与数值在计算机中存储的格式有关(原码、反码、补码、移码...等相关的内容),至于编程语言在底层如何表示和处理数值的还没有研究过。 下面均以8位格式表示各个整数,写一下个人对以上“奇淫技巧”的理解。 4. 判断两个数是否异号 在计算机中,带符号整数是以补码的形式存储。 二进制表示的首位为符号位,符号位为 0 时表示正数,符号位为 1 时表示负数。 ```java int x = -1, y = 2; // -1的补码表示:1,1111111;2的补码表示:0,0000010 bool f = ((x^y) < 0) // (-1)^2 补码表示:1,1111101 符号位为1表示负数(小于0)所以f为true...
83. 删除排序链表中的重复元素 ```java class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode p = head; while(p!=null){ while(p.next!=null&&p.val == p.next.val) p.next = p.next.next; p = p.next; } return head; } }