美文网首页
白板编程易犯小错误

白板编程易犯小错误

作者: 码农朱同学 | 来源:发表于2022-09-18 07:59 被阅读0次

用惯了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()];

相关文章

网友评论

      本文标题:白板编程易犯小错误

      本文链接:https://www.haomeiwen.com/subject/lapjortx.html