《剑指offer》Java实现--判断数组中是否存在和为指定值的三个数

题目描述

    给定一个整数数组datas和一个整数sum,判断数组中是否存在三个数的和为sum,存在输出True,不存在则输出False。

解题思路

    最容易想到的解法就是三层循环遍历判断,暴力解法,时间复杂度为O(n^3)。这里我们改进下算法,算法思路对应伪代码如下:外部一层循环,内部头尾指针同时移动,时间复杂度为nlog(n)

for i in 0 to datas.length
  int j=i+1;
  int k=datas.length-1;
  int currentSum=dadas[i]+datas[j]+datas[k];
  while(currentSum!=sum&&jsum){
      currentSum=dadas[i]+datas[j]+datas[--k];
    }
    if(currentSum==sum) return "True"
  } 
return "False"

Java代码实现

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String[] lineStr=sc.nextLine().split(",");
        String[] numStrs=lineStr[0].split(" ");
        Integer[] nums=new Integer[numStrs.length];
        for(int i=0;isum) {
                    currentSum=nums[i]+nums[index1]+nums[--index2];
                }
                if(currentSum==sum){
                    isExist="True";
                    break;
                }
            }
        }
        return isExist;
    }

}

你可能感兴趣的:(《剑指offer》Java实现--判断数组中是否存在和为指定值的三个数)