美文网首页
复杂度O(n)的查找和为x的数字

复杂度O(n)的查找和为x的数字

作者: YocnZhao | 来源:发表于2019-03-15 13:46 被阅读0次

一个按升序排列好的数组int[] array = {-5,-1,0,5,9,11,13,15,22,35,46},输入一个x,int x = 31,在数据中找出和为x的两个数,例如 9 + 22 = 31,要求算法的时间复杂度为O(n);

要求时间复杂度为O(n),而且是要求找出和为x而不是所有的和为x。
所以要求只遍历一遍array,两个index,从两头遍历,如果和大于target,则index2--,否则index1++;

public int[] getSum(int[] array, int target) {
        int length = array.length;
        int[] result = new int[2];
        int headIndex = 0;
        int tailIndex = length - 1;
        while (array[headIndex] + array[tailIndex] != target) {
            if (array[headIndex] + array[tailIndex] < target) {
                headIndex++;
            } else if (array[headIndex] + array[tailIndex] > target) {
                tailIndex--;
            }
            result[0] = array[headIndex];
            result[1] = array[tailIndex];
            if (headIndex >= tailIndex) {
                return result;
            }
        }
        return result;
    }

相关文章

  • 二分查找平均时间复杂度O( log n )

    使用二分查找在有序数组a[n]中查找一个元素x的时间复杂度__O( log n )________。 O(n) O...

  • 复杂度O(n)的查找和为x的数字

    一个按升序排列好的数组int[] array = {-5,-1,0,5,9,11,13,15,22,35,46},...

  • 247. Strobogrammatic Number II

    给定n,返回所有长度为n的频闪数字。 时间复杂度 O(n),空间复杂度O(n) Runtime: 140 ms, ...

  • JS的性能咋个优化嘛

    避免作用域链的频繁查找 避免重复的属性查找 首先对于o.x的时间复杂度是O(n),对于一般变量的取值时间复杂度是O...

  • 查找算法

    顺序查找 时间复杂度O(n) 折半查找(二分查找) 时间复杂度O(logn) 把n个数化为一颗二叉树输的高度为l...

  • 查找/索引技术

    查找算法平均时间复杂度空间复杂度查找条件顺序查找O(n)O(1)无序/有序二分查找O(log2n)O(1)有序二叉...

  • 300. 最长递增子序列

    解法 动态规划,时间复杂度为O(N * N) 贪心算法+二分查找,O(NlogN)

  • 700. Search in a Binary Search T

    二叉搜索树中查找元素 时间复杂度为:O(H),H为树的高度,平均时间复杂度O(logN),最坏时间复杂度O(N) ...

  • 分治与递归--实数的整数次幂

    给定实数 x 和整数 n, 求 x的n次幂时间复杂度:O(logN)

  • 算法图解记录

    1.二分查找,例如查找一个1-100的数字,时间复杂度为O(logn) 2.数组读取的时间为O (1),插入和删除...

网友评论

      本文标题:复杂度O(n)的查找和为x的数字

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