java 无序数组中两个元素相加等于指定的数 o(n)

  1. //思路:使用hash表存储数组各元素是否存在的标志,然后遍历数组,判断sum与当前数组元素的差值是否在hash表中,  
        //若为真则打印,该算法不要求数组有序,但要求一个hash数组的额外空间,时间复杂度是O(n)  
        private static void execute1(int[] array, int m) {  
            int size = array.length;  
            int hash[] = new int[size];  
            for(int i = 0; i < size; i++) {  
                hash[array[i]%size] = 1;   //hash表存储数组各元素是否存在的标志
            }  
              
            for(int i = 0; i < size; i++) {  
                int tmp = m - array[i];  
                if((tmp > array[i]) && (hash[tmp%size] == 1)){  
                    System.out.println(array[i] + " " + tmp);  
                }  
            }  
        }  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值