下面是一种可能的实现方式:

public static boolean canAddUpTo8449(int[] nums) {
    // 先排序,方便后面的双指针算法
    Arrays.sort(nums);

    // 双指针算法
    int left = 0, right = nums.length - 1;
    while (left < right) {
        int sum = nums[left] + nums[right];
        if (sum == 8449) {
            return true;
        } else if (sum < 8449) {
            // 如果和小于8449,左指针右移
            left++;
        } else {
            // 如果和大于8449,右指针左移
            right--;
        }
    }

    // 如果双指针算法结束后仍然没有找到符合条件的数字对,那么就返回false
    return false;
}

这个方法的思路比较简单:先将数组排序,然后使用双指针算法,分别从数组的左右两端开始向中间靠拢,每次计算左右两个指针指向的数字的和,如果和等于8449,就返回true;如果和小于8449,就将左指针右移,增大和的值;如果和大于8449,就将右指针左移,减小和的值。如果左右指针重合了还没有找到符合条件的数字对,那么就返回false。

一个数组有11个整数分别为1 4 1048576 16 32 64 128 256 8192 2097152 16777216写一段java代码判断整数8449能否由数组中的数字相加得到数组中的数字只能使用一次

原文地址: https://www.cveoy.top/t/topic/b2wb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录