LeetCode1099 小于 K 的两数之和

article/2025/8/26 6:13:52

LeetCode1099 小于 K 的两数之和

  • 题目
  • 解题
    • 解题一:二分查找
    • 解题二:双指针

题目

在这里插入图片描述
这是 LeetCode259 较小的三数之和 的简单版(详细思路见 259 题),其实 259 题也可以取名为:小于 K 的三数之和。所以两道题解题思路一样,259 题就是在 1099 题上套了层循环。

解题

解题一:二分查找

// javascript
var twoSumLessThanK = function(nums, k) {nums.sort((a, b) => a - b);let sum = -1;for (let i = 0; i < nums.length - 1; ++i) {const target = k - nums[i];let left = i + 1, right = nums.length - 1;while (left <= right) {const mid = left + ((right - left) >> 1);if (nums[mid] >= target) {right = mid - 1;} else {left = mid + 1;}}// 如果 [i + 1, nums.length - 1] 里找不到 > target 的数,right = i// 但是两个数字应该是不相同的,所以 i === right 时,不对 sum 进行更新if (i !== right) {sum = Math.max(sum, nums[i] + nums[right]);}}return sum;
};

时间复杂度 O ( n log ⁡ n ) O(n \log n) O(nlogn)。排序需要 O ( n log ⁡ n ) O(n \log n) O(nlogn),枚举 i i i 需要 O ( n ) O(n) O(n),二分查找 j j j 需要 O ( log ⁡ n ) O(\log n) O(logn),因此总的时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn)

空间复杂度 O ( log ⁡ n ) O(\log n) O(logn)。排序需要 O ( log ⁡ n ) O(\log n) O(logn),其余变量空间都是常数范围内的。

解题二:双指针

j 是从后向前遍历的,当 nums[i] + nums[j] < k 时找到的是 [i + 1, nums.length - 1] 范围内符合条件的 j 的最大值,数组又是升序排列的,所以 nums[i] + nums[j] 就是固定左指针时能获得的最大的小于 K 的两数之和。更新 sum 值,再移动左指针去寻找有没有更大的小于 K 的两数和。

// javascript
var twoSumLessThanK = function(nums, k) {nums.sort((a, b) => a - b);let sum = -1;let i = 0, j = nums.length - 1;while (i < j) {if (nums[i] + nums[j] >= k) {j--;} else {sum = Math.max(sum, nums[i] + nums[j]);i++;}}return sum;
};

时间复杂度 O ( n log ⁡ n ) O(n \log n) O(nlogn)。排序需要 O ( n log ⁡ n ) O(n \log n) O(nlogn),在每一步中,要么 i \mathrm{i} i 向右移动一位,要么 j \mathrm{j} j 向左移动一位。当 i ≥ j \mathrm{i}\geq\mathrm{j} ij 时循环结束,因此它的时间复杂度为 O ( n ) O(n) O(n)

空间复杂度 O ( log ⁡ n ) O(\log n) O(logn)。排序需要 O ( log ⁡ n ) O(\log n) O(logn),其余变量空间都是常数范围内的。


http://chatgpt.dhexx.cn/article/RiLR72nh.shtml

相关文章

报错1099端口被占用的解决办法

1.点winr 输入cmd。输入下面语句 netstat -aon |findstr "1099"找到1最后面的数字 2.将刚才那个数字&#xff0c;复制到下面代码的数字里。再复制代码粘贴到cmd里面 会出现终止进程 taskkill -f -pid "164844"

IDEA启动tomcat程序1099端口被占用解决方案

报错信息 localhost&#xff1a;1099 is already used 重启&#xff0c;改换端口都无效 以下总结了网上的几种解决方案&#xff1a; 方案一对我来说无效&#xff0c;根本查找不到1099的进程方案二对我来说也无效&#xff0c;任务管理器中没有java.exe进程方案三有效&am…

IDEA:运行Tomcat时报错“1099”:Address localhost:1099 is already in use

1.报错的结果 报错Address localhost:1099 is already in use 意思就是&#xff1a; 地址localhost:1099已被使用 2.报错原因 1.tomcat的端口已经被使用&#xff0c;与运行的起了冲突 2.短时间内频繁运行tomcat服务器。 3.解决方法 1.winR&#xff0c;打开命令提示符框&am…

Unable to ping server at localhost:1099

Unable to ping server at localhost:1099 tomcat的版本和jdk的版本不匹配 Tomcat 10.x 需要运行在 JDK 11 或更高版本的环境下。 具体来说&#xff0c;Tomcat 10.0.x 推荐使用 JDK 11 运行&#xff0c;而 Tomcat 10.1.x 推荐使用 JDK 17 运行。更改了jdk的版本依然报错,因为…

Address localhost:1099 is already in use

出现错误&#xff1a;&#xff08;端口被占用&#xff09; 解决方案一&#xff1a;任务管理器&#xff08;CtrlShiftEsc&#xff09; 解决方案二&#xff1a;cmd 1、 netstat -ano | find "1099"&#xff0c;找到PID 2、tasklist | find "PID" &#xff0…

IDEA启动tomcat 端口1099被占用(1099 is already in use)

问题&#xff1a;启动Tomcat 未成功 Tomcat服务器设置中JMX端口设置为1099端口 补充知识&#xff1a; JMX:(Java Management Extensions)是一个为应用程序植入管理功能的框架 &#xff0c;从Java5.0开始引入到标准Java技术平台中。JMX是一个管理和监控JAVA应用程序的接口规范…

Tomcat的1099端口被占用

Tomcat端口1099被占用 刚才使用Tomcat启动web项目的时候&#xff0c;发现了错误 引言 问题提示&#xff1a;Error running ‘Tomcat 9’: Address localhost:1099 is already in use 问题分析&#xff1a;Tomcat9 运行错误&#xff0c;本机地址1099端口号已经被占用。 方法…

java 1099_【LeetCode(Java) - 1099】小于 K 的两数之和

【LeetCode(Java) - 1099】小于 K 的两数之和 【LeetCode(Java) - 1099】小于 K 的两数之和 文章目录 1、题目描述 2、解题思路 3、解题代码 1、题目描述 2、解题思路 ??从一个无序数组找元素&#xff0c;第一个步骤就是先排序&#xff0c;否则只能暴力遍历。 ??排序后&…

1099 性感素数

“性感素数”是指形如 (p, p6) 这样的一对素数。之所以叫这个名字&#xff0c;是因为拉丁语管“六”叫“sex”&#xff08;即英语的“性感”&#xff09;。&#xff08;原文摘自 http://mathworld.wolfram.com/SexyPrimes.html&#xff09; 现给定一个整数&#xff0c;请你判断…

IDEA Unable to ping server at 1099问题

问题描述: IDEA配置好tomcat&#xff0c;jdk&#xff0c;jre后&#xff0c;运行项目&#xff0c;启动tomcat报错&#xff1a; Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099 1 博客问题处理汇总 …

1099端口占用问题解决方案

最近在开发的时候&#xff0c;IDEA工具意外退出了&#xff0c;再次启动之后&#xff0c;启动web工程报1099端口已经被占用了&#xff0c;现在将解决方法总结如下&#xff1a; 1.在windows命令行窗口下执行&#xff1a; C:\>netstat -aon|findstr 1099&#xff0c;然后查看输…

IDEA报错1099

开发工具与关键技术&#xff1a; idea java 撰写时间&#xff1a;2021年5月18日我们在用IDEA开发项目的时候遇到IDEA报错1099这个问题&#xff0c;就是启动Tomcat的时候会出现下面这个提示。 分析一下出现这个问题的原因&#xff1a; 1、 没有停掉Tomcat就强制关闭了ide…

解决1099端口被占用的问题

解决1099端口被占用的问题 有时候运行web项目的时候会遇到 Error running Tomcat8: Address localhost:1099 is already in use 的错误&#xff0c;导致web项目无法运行。这明显是1099端口已经被占用&#xff0c;解决办法如下&#xff1a; 1.在电脑上按下winR键&#xff0c;输…

工作日记:IDEA使用Tomcat时1099端口被占用解决方案

1.报错原因 如果你没在其他软件里指定过1099端口&#xff0c;那1099端口被占用的大部分原因是IDEA项目未正常关闭。 2.解决方案 首先在命令行输入netstat -ano |findstr 1099查看占用1099端口的进程号。 找到进程号后可以用命令tasklist |findstr 进程号 查看进程的相关信息…

1099端口被占用

补贴&#xff1a; 学习完javaweb之后&#xff0c;连接tomcat远程服务器&#xff0c;出现1099端口被占用问题&#xff0c;可以通过以下方式解决 1、打开cmd窗口&#xff0c;以管理员身份运行 2、输入命令&#xff1a;netstat -aon|findstr 1099&#xff08;8080&#xff09;&…

从一次IDEA启动tomcat时1099端口报错的思考和探究

今天我启动在IDEA上启动tomcat的时候&#xff0c;报出如下错误信息&#xff1a; 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use: JVM_Bind 1099端口是干啥的&…

1099 例题6-1 逆序输出数组元素

题目描述 从键盘上输入10个整数&#xff0c;存储在一个长度为10的整型数组中&#xff0c;要求将输入的10个数逆序输出。 如输入为&#xff1a;0,1,2,3,4,5,6,7,8,9 输出为9,8,7,6,5,4,3,2,1,0 输入 10个整数&#xff0c;以空格分隔 输出 将输入的10个整数逆序输出&#xff0c;每…

跑步的节奏

一周七天跑五天&#xff0c;跑三天休息一天&#xff0c;然后跑两天再休息一天。

鄂马赛记 | 跑步就跑步,跑什么马拉松?

这个五一节&#xff0c;除了猫在家里读了基本书&#xff0c;还参加了一场马拉松。马拉松在我的家乡鄂州市举办&#xff0c;是首次采用五城联动的方式&#xff0c;同时在湖北长江沿岸的五座城市鸣枪起跑&#xff0c;名曰长江超级半程马拉松。 鄂州市是一座小城市&#xff0c;虽然…

【解决】使用步道乐跑app如何查询体测成绩

单击屏幕下方的校园&#xff0c;进入校园界面后&#xff0c;再单击屏幕上方的体质测试 单击成绩查询