3Sum Closest 找3个数使得和最接近的target @LeetCode

深度学习在移动开发中的应用:实时姿态估计实战 我们将使用TensorFlow Lite框架,结合专为移动端优化的MoveNet模型,实现一个能够在主流Android设备上达到30FPS的多人姿态跟踪解决方案,并深入探讨其优化技巧和实际应用场景。特别是3D姿态估计、多人长期跟踪等前沿技术的发展,将进一步推动移动端姿态估计技术的应用深度和广度。在下一篇文章中,我们将探讨深度学习在移动端的另一个创新应用:实时手势识别,包括如何在资源受限的环境中实现复杂手势的实时识别,以及这项技术在AR/VR交互、智能家居控制等场景中的应用。第四部分:典型应用场景实现。 阅读详情

思路:

与上题差不多,只是不能再用系统自带的二分法,要自己写一个。


package Level3;

import java.util.Arrays;

/**
 * 3Sum Closest 
 * 
 * Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

    For example, given array S = {-1 2 1 -4}, and target = 1.

    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
 */
public class S16 {

	public static void main(String[] args) {
		int[] num = {-1,2,1,-4};
		System.out.println(threeSumClosest(num, 1));
	}
	
	public static int threeSumClosest(int[] num, int target) {
		int sum = 0;
		int diff = Integer.MAX_VALUE;
		Arrays.sort(num);

		for (int i = 0; i < num.length - 1; i++) {		// 前指针向后
			for (int j = num.length - 1; j > i+1; j--) {	// 后指针向前
				int remain = target - (num[i] + num[j]);
				int third = bsearch(num, i + 1, j, remain);
				int tmp = num[i] + num[third] + num[j];
				if(Math.abs(tmp-target) < diff){		// 保存最小不同的数
					diff = Math.abs(tmp-target);
					sum = tmp;
				}
			}
		}
		
		return sum;
    }
	
	// 修改版二分法
	public static int bsearch(int[] num, int low, int high, int key){
		int mid = low + (high-low)/2;
		while(low < high){		// low不能与high相等!
			mid = low + (high-low)/2;
			if(num[mid] == key){
				return mid;
			}else if(key < num[mid]){
				high = mid-1;
			}else{
				low = mid+1;
			}
		}
		return mid;
	}

}


Rewrite:

public int threeSumClosest(int[] num, int target) {
    if (num.length<3) { // if less than three items then return 0
        return Integer.MAX_VALUE;
    }
    Arrays.sort(num);
    int res = num[0]+num[1]+num[2];
    for (int i=0; i<num.length-2; ++i) {
        if (i>0 && num[i]==num[i-1])  continue;
        int start = i+1, end = num.length-1;
        while (start<end) {
            int sum = num[i] + num[start] + num[end];
            if (Math.abs(sum-target) < Math.abs(res-target)) {
                res = sum;
            }
            if (sum == target) {
                return res;
            } else if (sum < target) {
                start++;
            } else {
                end--;
            }
        }//end-while
    }
    return res;
}



public class Solution {
    public int threeSumClosest(int[] num, int target) {
        Arrays.sort(num);
        int diff = Integer.MAX_VALUE;
        int closetSum = 0;
        for(int i=0; i<=num.length-3; i++) {
            int left = i+1;
            int right = num.length-1;
            while(left < right) {
                int sum = num[i]+num[left]+num[right];
                if(Math.abs(sum-target) < diff) {
                    diff = Math.abs(sum-target);
                    closetSum = sum;
                }
                if(sum == target) {
                    return sum;
                } else if(sum < target) {
                    left++;
                } else {
                    right--;
                }
            }
        }
        return closetSum;
    }
}




深度探索:VS2022 牵手 DeepSeek,开启开发新征程 通过将 VS2022 与 DeepSeek 接入,我们成功开启了智能开发的新征程。从前期的硬件准备、软件环境搭建,到实战环节的一步步配置与整合,再到全面的测试与验证,每一个步骤都充满挑战,但也带来了满满的收获。在实际应用中,VS2022 与 DeepSeek 的结合展现出了强大的优势,为开发者带来了更高的效率和更出色的代码质量。无论是代码自动补全、智能代码审查,还是自然语言交互编程,都让开发过程变得更加智能、便捷,极大地提升了开发体验。 阅读详情

相关推荐

基于FMCW技术的毫米波雷达测速原理与应用

调频连续波(FMCW)技术是毫米波雷达中实现高精度测速的核心方法之一。本文详细介绍了FMCW测速的基本原理、信号处理流程以及在实际应用中的关键技术。通过分析FMCW雷达的多普勒效应和频率差测量方法,本文展示了如何利用FMCW技术实现目标速度的高精度检测。此外,本文还探讨了FMCW测速在自动驾驶、智能交通和工业自动化等领域的应用案例,为毫米波雷达开发者提供了理论支持和实践指导。

不谈枯燥公式,只聊雷达趋势。用大白话解读毫米波里的黑科技。 1137

每天一道LeetCode-----给定序列中2/3/4个元素的和为target的所有集合,或3个元素的和最接近target的集合

原题链接Two Sum意思是给定一个数组,求数组中哪两个元素的和是给定值。蛮力法的求解就是两层for循环,时间复杂度是O(n2)。class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for(int i = 0; i < nums.size() - 1; ++i)

一个程序渣渣的小后院 617

第1.1节 构网型 vs. 跟网型:根本区别与技术原理

构网型与跟网型变流器的本质区别在于控制哲学与等效模型。跟网型变流器采用"电压跟随,电流注入"策略,等效为受控电流源,依赖电网电压作为参考,在弱电网下存在稳定性问题。构网型变流器采用"自主同步,电压构建"策略,等效为受控电压源,能主动构建电压和频率,具备自主运行、黑启动和电网支撑能力。两者的核心差异体现在同步机制、电网依赖性、故障行为和系统支撑等方面。构网型变流器更适合高比例新能源、弱电网和微电网场景,是未来电力系统的重要发展方向。

技术工作者 1395

三数之和&&最接近的三数之和

//day08:三数之和。思路:先排序,然后遍历每一个数字的同时,再设置两个指针left/right public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList<>(); Arr...

m0_37600626的博客 257

全面解读AI Infra:架构、生态与未来趋势

文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为

技术引领业务创新 610

块存储:AIO的直接写流程注释

提交io流程中aio_write之前函数的注释,可参考“块存储:AIO的直接读流程注释”。

yiyeguzhou100的专栏 1333

从一个数组中查找和目标数最接近的或者相等的数

/**  * 查找出最接近目标值的数,并返回。  * @param array  * @param targetNum  * @return  */ public static Integer binarysearchKey(Object[] array, int targetNum) { Arrays.sort(array); int targetindex = 0;

沉底的石头 3万+

【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!

MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1162

最接近的三数之和(给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数, 使得它们的和与 target 最接近。返回这三个数的和)...

例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 思路:首先对数组进行排序 Arrays.sort(arr); 将前三个数相加赋给closeNum,表示初始化 int closeNum = arr[0] + arr[1] + arr[2]; 在第一...

diannuo5927的博客 2170

三、参考比较法之城市建成区提取——提取

在正式开始提取之前,还是要继续啰嗦一下,其实基于夜间灯光数据建成区提取,可以分为好几个层次,基于县一级、市一级、省一级,很多论文的做法都是以市一级为准,也就是统计好市一级城市的每一年的统计年鉴中的建成区面积作为备用。有人可能会问为什么不以县一级,由于县一级的统计数据一般存在缺失,很难形成一个长时间序列的数据,所以一般采取的是市一级。前文也进行建议,如果确实要基于县一级进行提取可以参考前面理论介绍那篇文章中的相关建议。那么当我们确定阈值后如何将城市建成区提取出来?

端木宛白的博客家园 5401

自定义载板RK3588HDMI输入配置完整解决方案

✅ HDMI输入信号检测✅ 自动时序识别(支持1080p@60Hz等标准格式)✅ V4L2视频设备接口✅ 实时视频流捕获✅ H.264编码录制✅ HDCP内容保护支持问题根因识别:发现了hdmim1模块资源冲突的本质问题硬件设计理解:明确了Orange Pi 5 Plus的真实硬件设计意图功能实现:成功启用HDMI输入功能,替代了无法使用的HDMI1输出完整验证:建立了从硬件检测到视频录制的完整测试流程。

梁俊星的博客 1271

LeetCode第十六题-数组中三数之和最接近目标值的答案

3Sum Closest 问题简介: 给定n个整数的数组nums和整数目标,在nums中找到三个整数,使得总和最接近目标,返回三个整数的总和,可以假设每个输入都只有一个解决方案 举例: 给定数组:nums=[-1, 2, 1, -4], 目标值:target = 1. 最接近目标值的答案是2 (-1 + 2 + 1 = 2). 解法一: 与上一道题类似,这次要求的是三数之和与目标值的差值最小值,...

weixin_44147866的博客 1690

【ITS模型】基于MATLAB的ITS宽带短波信道模型的建模和仿真

1.软件版本 MATLAB2010b 2.本算法理论知识 对短波信道建模具有里程碑意义的是沃特森在1970年发表的一篇文章,文章中提出了一种静态模型,并在大气中进行了实验验证。 此静态模型可以描述为高斯散射增益抽头延迟线模型,即Watterson模型。 Watterson信道模型是经典的窄带短波信道模型,在这个模型中,信道衰落是瑞利幅度分布,而在每种传播模式中多普勒扩展的功率谱满足高斯分布。Watterson模型没有定义延时扩展的形状,认为各个多径传输模式中不存在延时扩展。其...

FPGA/MATLAB学习教程/源码/项目合作开发 2757

第十一天:《LeetCode一天一例》-----从一个集合中找出三个数,和最接近目标值target(python实现)

找三个数最接近目标值 题目:s = [-1, 2, 1, -4], target = 0 。。 我们要做的就是从s中找出三个数,和加起来最接近0。。 怎么做呢?? 分析: 看到这种题,数字不多,用蛮力 我的想法是: 第一步: 对s列表中的值进行排序 第二步: 固定一个值,然后设两个...

shawroad的博客 1402

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

leetcode第一道题,找出数组中两数之和为target的两个数,返回其下标答案及思考

题目描述 初始函数 class Solution { public int[] twoSum(int[] nums, int target) { } } 思路解析 最好想的就是暴力法,拿第一个和第二个、第三个、第四个加和是不是等于target,然后再用第二个和第三个、第四个、第五个等等依次加和,时间复杂度,很简单两个for循环,n²级别。 public i...

siying8419的博客 3582

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Valid Number 判断一个string是不是有效地数字表达式 @LeetCode

这道题看了看网上的解法,很多都做得很麻烦。其实我觉得,这道题就是考察正则表达式。 package Level2; /** * Valid Number * * Validate if a given string is numeric. Some examples: "0" => true " 0.1 " => true "abc" => false "1 a" =>

1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Maximum Subarray 最大子数组和(连续)@LeetCode

package Level3; import java.util.Arrays; /** * * Maximum Subarray * * Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, give

6667

Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode

树的Level Order Traversal加上ArrayList翻转 package Level3; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import Utility.TreeNode; /** * Binary Tree Level Order T

5192

Binary Tree Level Order Traversal 分层遍历二叉树@LeetCode

package Level3; /** * Binary Tree Level Order Traversal * * Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example: G

5154

Merge Intervals 合并区间@LeetCode

采用的是和Insert Interval一样的思想,只不过最开头要先排序一下,用到了java的Collections.sort(List list, Comparator c) 自己实现了一个Comparator的compare方法 package Level4; import java.util.ArrayList; import java.util.Collections; im

5082

Evaluate Reverse Polish Notation 求RPN的值@LeetCode

用一个Stack就很容易做到了,这道题的最大发现是:这道题是2013-11-27发布出来的,到今天,短短半个月内,居然提交量快到了1万!!! 居然有这么多人都在刷题!!压力山大! package Level3; import java.util.Stack; /** * * Evaluate Reverse Polish Notation * * Evaluate t

4522

Text Justification 文本对齐 @LeetCode

快被这道题搞死了。。 根据这篇重写了 http://www.cnblogs.com/TenosDoIt/p/3475275.html 分析:这一题需要注意两个点,a、当该行只放一个单词时,空格全部在右边 b、最后一行中单词间只有一个空格,其余空格全部在右边。然后只要贪心选择,在一行中尽量放多的单词。 package Level4; import java.util.ArrayL

4510

Celebrity Problem

Celebrity Problem import java.util.Stack; /** In a party of N people, only one person is known to everyone. Such a person may be present in the party, if yes, (s)he doesn’t know anyone in t

3820

3Sum 数组找3数之和为0 @LeetCode

排序,二分法查找,前后双指针 package Level3; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * 3Sum * Given an array S of n integers, are there el

3538

Permutations 排序 @LeetCode

package Level3; import java.util.ArrayList; /** * Permutations * * Given a collection of numbers, return all possible permutations. For example, [1,2,3] have the following permutations: [1,2,3

3084

Subsets 求子集 @LeetCode

package Level3; /** * Subsets * * Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain

3049
上一篇: 3Sum 数组找3数之和为0 @LeetCode
下一篇: Letter Combinations of a Phone Number 电话按键字符的组合@LeetCode
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值