用惯了IDE的智能提示,在纸上写代码时,常常犯一些细小的错误。写下改文章记录下曾经犯过的错误。
// 忘了写;
// thow写成了return;
// new忘记写;
// IllegalArgumentException拼写错误
throw new IllegalArgumentException("无重复数据");
// 忘记初始化或忘记写类型int
for (int i = 0; i < nums.length; i++) {
}
// 写成 A=B 赋值操作 混淆 ==和=
if(A==B) {
}
// Integer不能写成int,也不能写成integer
// map.containsKey而不是 map.contains
// map.get() 而不是 map.getValue()
// map.put() 而不是 map.add()
Map<Integer, Integer> map = new HashMap<>();
map.put(333, 3);
if (map.containsKey(333)) {
int a = map.get(333);
}
// dummyHead 节点
ListNode dummyHead = new ListNode(0);
//指针指到原来的位置
ListNode res = dummyHead;
while (res != null) {
if (res != null) res = res.next;
}
return dummyHead.next;
//数组 length
String[] aaa = new String[]{""};
int a = aaa.length;
//集合类 size()
Deque<String> bbb = new ArrayDeque<>();
int b = bbb.size();
//字符串 length()
String ccc = "cccc";
int c = ccc.length();
//Arrays.sort 而不是 Array.sort
//Arrays.binarySearch(intArray, 1) 返回 index
//Arrays.fill(dp, max)
//Arrays.copyOf(nums, k)
Arrays.sort(new int[]{1, 2});
//通过比较器排序,实现最大堆
PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
/**以下是对比较器升序、降序的理解.
*(1) 写成return o1.compareTo(o2) 或者 return o1-o2表示升序
*(2) 写成return o2.compareTo(o1) 或者return o2-o1表示降序
*/
return o2.compareTo(o1);
}
});
// char[] str1 = s.toCharArray()
// Arrays.equals(str1, str2)
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
//二分查找
//target<arr[mid]或者 arr[mid] > target 而不是target>arr[mid]
// end =mid-1 而不是 end=mid 否则死循环
// begin=mid+1 而不是 begin=mid 否则死循环
// while(begin<=end) 而不是 while(begin<end)
public int binarySearch(int[] arr, int target){
int begin=0, end= arr.length-1; int mid;
while(begin<=end){
mid=begin+(end-begin)/2;
if(target==arr[mid]){
return mid;
} else if(target>arr[mid]){
end=mid;
} else{
begin=mid;
}
}
return -1;
}
//正确做法
public int binarySearch(int[] arr, int target) {
int begin = 0, end = arr.length - 1;
int mid;
while (begin <= end) {
mid = begin + (end - begin) / 2;
if (target == arr[mid]) {
return mid;
} else if (arr[mid] > target) {
end = mid - 1;
} else {
begin = mid + 1;
}
}
return -1;
}
// int[] 不是 int
// new int[] 而不是 new int()
int[] arr=new int(stack.size());
int[] arr=new int[stack.size()];
网友评论