哈希表总体来说对我比较简单,之前学的比较好
值得一提的是202,这里有一个快慢指针的解法我觉得也是不错的
public class Solution {
public int squareSum(int n) {
int sum = 0;
while(n > 0){
int digit = n % 10;
sum += digit * digit;
n /= 10;
}
return sum;
}
public boolean isHappy(int n) {
int slow = n, fast = squareSum(n);
while (slow != fast){
slow = squareSum(slow);
fast = squareSum(squareSum(fast));
};
return slow == 1;
}
}
总体对于数的处理还是比较统一,然后我看到了这么一段话
Java 对于 自定义类的对象的比较,可以实现 Comparable 接口,重写 compareTo 方法,或者 sort 的时候指定 Comparator。但是如果 compareTo 没有写好,会出现 timsort comparison method violates its general contract 这样的报错。
因为 Java 的 sort 底层从 jdk 1.7 开始是 TimSort,compareTo 需要满足以下性质:
自反性:x,y 的比较结果和 y,x 的比较结果相反。
传递性:x>y,y>z,则 x>z。
对称性:x=y,则 x,z 比较结果和 y,z 比较结果相同。
需要按上面 3 条排查一下 compareTo 方法的实现。其中,如果排序是因为 传递性 出错的话,肯定是因为数组里的元素比较大小的时候成环了!也就是说数组里有若干个元素,
那么我怎么找到这个成环的 case,来找出 compareTo 方法的潜在问题呢?就是 有向图找环!在排序的时候把比较的元素和比较结果打印出来,再使用 有向图找环 就找到原因了!
这种链表找环的思想昨天在课程里面看到过,这里刚好有人复现思想因此也记录下来

969

被折叠的 条评论
为什么被折叠?



