タイトル16、および最寄りの3の数

題しI、1

ここに画像を挿入説明

第二に、アイデア

そして、同様のトピックに関するアイデア、の質問のコード変更するには、私の直接支出
、これは問題であるリンク

第三に、コード

import java.util.Arrays;

public class T016 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] nums = {-1, 2, 1, -4 };
		System.out.println( threeSumClosest( nums, 1) );	//2

		int[] nums1 = {1,1,-1,-1,3};
		System.out.println( threeSumClosest( nums1, -1) );	//-1

	}

	public static int threeSumClosest(int[] nums, int target) {

		int result;

		//将result初始化
		if ( nums.length >= 3 )
			result = nums[0]+nums[1]+nums[2];
		else
			return 0;

		//将数组排序
		Arrays.sort( nums );

		//按照顺序遍历所有数
		for ( int k = 0; k < nums.length-2; k++ ){

			//l和r分别指向剩余所有数的最小值和最大值
			int l = k+1, r = nums.length-1;

			//从两边到中间,依次遍历,得到最小值是nums[k]的所有数对
			while ( l < r ){

				int tmp = nums[k] + nums[l] + nums[r];

				//判断结果是否更优
				if ( Math.abs( tmp-target ) < Math.abs( result-target ) )
					result = tmp;

				//三数之和偏大,r减一
				if ( tmp > target ){
					r--;
				//三数之和偏小,l加一
				}else{
					l++;
				}
			}
		}

		return result;
	}
}

  1. 出典:滞在ボタン(LeetCode)
    リンクします。https://leetcode-cn.com/problems/3sum-closestは
    すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。↩︎

公開された48元の記事 ウォンの賞賛1 ビュー855

おすすめ

転載: blog.csdn.net/weixin_45980031/article/details/104137642