HT350IntersactionOfTwoArrays2

Clue

Logic Flaw

  • 之前确定了longArray和shortArray,感觉用shortArray做map会更快,但是却忘了另一个array决定着答案的数量
  • 忘记了value并非自然数,可以为负数,如果加入result,需要确定value>0
  • 在用arraylist复制到int[]的时候,注意如果用_arraylist.remove(i)会改变原结构, i会溢出.

BinarySearch的bugs

  • 在用BinaryArray的时候, 找到相等的, 应该向前追溯到第一个,作为startIndex
  • 但要注意,小心i == 1啊
private static int binarySearch (int[] num, int start, int end, int target) {
    while(start <= end) {
        int mid = start + (end - start)/2;
        if (num[mid] == target) {
            while (mid > 1 && mid > start && num[mid] == num[mid - 1]) 
                --mid;
            return mid;
        } else if (num[mid] > target) {
            end = mid - 1;
        } else {
            start = mid + 1;
        }
    }
    return -1;
}
  • 看中间的while,其实没必要, 其实可以继续用binary算法,就当作num[mid] > target
  • 并且除去上面的bug 也还有问题, mid == start 的时候就不返回了,这样不对.

Attention

  • If compare two sorted arrays, we usually don’t use self-increased indexes, like for loop
  • Don’t forget to increase both indexes if equals
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值