bigdecimal 小于等于0_圖解小于 K 的兩數之和

點擊藍色“五分鐘學算法”關注我喲

加個“星標”,天天中午 12:15,一起學算法

0d973cc0940be77891e8ca576579dcc5.png

作者 | P.yh

來源 | 五分鐘學算法

題目描述

題目來源于 LeetCode 上第 1099 號問題:小于 K 的兩數之和。

給你一個整數數組 A 和一個整數 K,請在該數組中找出兩個元素,使它們的和小于 K 但盡可能地接近 K返回這兩個元素的和

如不存在這樣的兩個元素,請返回 -1

示例 1:

輸入:A =?[34,23,1,24,75,33,54,8], K = 60
輸出:58
解釋:
34 和 24 相加得到 58,58 小于 60,滿足題意。

示例 2:

輸入:A =?[10,20,30], K = 15
輸出:-1
解釋:
我們無法找到和小于 15 的兩個元素。

提示:

  1. 1 <= A.length <= 100

  2. 1 <= A[i] <= 1000

  3. 1 <= K <= 2000

題目解析

傳統的 TwoSum 都是要你找到等于 target 的配對,那么如果說要找到 大于/小于 target 的配對呢?

這個時候 Hash 表的方法就很難 work 了,因為 Hash 表比較適合處理 等于 的情況 !

那么就需要考慮如何使用排序加雙指針的方法來解決這個問題,這里,題目是要求小于 target 的數量,我們還是按照之前的分析思路來分析。

如果說當前左右指針指向的元素的和大于或者等于 target,那么勢必我們需要向左移動右指針,讓兩個元素的和盡可能地小。

當前頭尾指針指向的元素和小于 target 的時候,這時我們需要記錄答案,雖然這道題目里面沒提,如果說要記錄配對數量的話,這時并不是記錄一個答案,如果說當前左指針固定,除了當前的右指針指向的元素,在左指針和右指針之間的數都是滿足要求的,我們只需要加上這個區間的數量即可。

當然如果數組中存在重復元素,那么我們就需要按照之前的套路遍歷去重了,當然對于這道題來說,我們選擇滿足條件的最大值即可。

動畫描述

代碼實現

public?int?twoSumLessThanK(int[]?A,?int?K)?{
????if?(A?==?null?||?A.length?==?0)?{
????????return?-1;
????}

????Arrays.sort(A);

????int?l?=?0,?r?=?A.length?-?1;
????int?result?=?Integer.MIN_VALUE;

????while?(l?????????if?(A[l]?+?A[r]?>=?K)?{
????????????r--;
????????}?else?{
????????????result?=?Math.max(result,?A[l]?+?A[r]);
????????????l++;
????????}
????}

????return?result?==?Integer.MIN_VALUE???-1?:?result;
}

c9e426891a7760c248000102cd29e682.gif

有熱門推薦?

1.【程序員】全球最厲害的 14 位程序員

2.【GitHub】我在 GitHub 上看到了一個喪心病狂的開源項目!

3.【算法】動畫:七分鐘理解什么是KMP算法

4.【數據結構】十大經典排序算法動畫與解析,看我就夠了!

9ac34f0a602f434818fa5a648c57e22f.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258729.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258729.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258729.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用STS創建Maven的Web項目轉

右鍵New——>other——》Maven——》Maven Project 彈出框中點擊Next&#xff0c;在Filter中寫上&#xff1a;webapp. 然后在下面的框中選擇org.apache.maven.archetypes&#xff0c;點擊Next 在新彈出的窗口中寫上Group Id和Artifact Id&#xff0c;Finish即可成功。 創建完…

img超出div width時, jQuery動態改變圖片顯示大小

參考&#xff1a; 1. http://blog.csdn.net/roman_yu/article/details/6641911 2. http://www.cnblogs.com/zyzlywq/archive/2012/02/23/2364292.html轉載于:https://www.cnblogs.com/carlo/p/4584008.html

《TOGAF 9.1IT企業架構》什么是企業IT架構

2. 什么是企業IT架構 現在有越來越多的企業IT架構定義。在這一章&#xff0c;你會學習到一些企業IT架構的方法&#xff0c;我們會給你深入解釋一種實用的方法&#xff0c;這種方法視企業架構師為CIO(譯注&#xff1a;CIO首席信息官&#xff0c;是負責一個公司信息技術和系統所有…

pdf 深入理解kotlin協程_Kotlin協程實現原理:掛起與恢復

今天我們來聊聊Kotlin的協程Coroutine。如果你還沒有接觸過協程&#xff0c;推薦你先閱讀這篇入門級文章What? 你還不知道Kotlin Coroutine?如果你已經接觸過協程&#xff0c;但對協程的原理存在疑惑&#xff0c;那么在閱讀本篇文章之前推薦你先閱讀下面的文章&#xff0c;這…

編譯py-faster-rcnn的問題匯總及解決方法

按照官網 的提示&#xff0c;我開始安裝faster rcnn&#xff0c;但是出現了很多問題&#xff0c;我將其匯總了起來&#xff0c;并提出了解決辦法。 先說明一下我的配置&#xff1a; python : anaconda2linux: centos 6.9 安裝faster rcnn請先參考&#xff1a;《cuda8cudnn4 F…

openWRT自學---針對backfire版本的主要目錄和文件的作用的分析整理

特別說明&#xff1a;要編譯backfire版本&#xff0c;一定要通過svn下載:svn co svn://svn.openwrt.org/openwrt/branches/backfire&#xff0c;而不能使用http://downloads.openwrt.org/backfire/10.03/中的源碼包&#xff1a;backfire_10.03_source.tar.bz2 結合文檔《OpenWr…

自然語言交流系統 phxnet團隊 創新實訓 項目博客 (五)

3DMax方面所涉及的專業知識&#xff1a; &#xff08;1&#xff09;一下的關于3DMax中對于人物的設計和操作均需要在對3DMax基礎知識熟練掌握的情況下進行的。 &#xff08;2&#xff09;骨骼架設&#xff1a;首先對導入到3DMax中的人物模型進行架設骨骼…

linux 安裝python-opencv

三種方法&#xff1a; 1. pip 安裝 &#xff1a; pip install opencv-python &#xff0c;最新版為opencv3安裝后>>> import cv2 >>> print cv2.__version__參考&#xff1a;http://www.cnblogs.com/lclblack/p/6377710.html 2. anaconda的conda安裝 ,可以指…

《你的燈亮著嗎》讀書筆記Ⅲ

轉載于:https://www.cnblogs.com/yue3475975/p/4586220.html

golang協程測試

package main import ( "fmt" "time") const NUMBER 1000000 func test() { for { }} func main() { fmt.Println(time.Now().UnixNano()) for i : 0; i < NUMBER; i { go test() } fmt.Println(time.Now().UnixNano()) for { }} 啟動100W個協程&#…

nvidia顯卡對比分析

本文章轉載自&#xff1a;http://www.cnblogs.com/lijingcong/p/4958617.html 科學計算顯卡的兩個主要性能指標&#xff1a;1、CUDA compute capability&#xff0c;這是英偉達公司對顯卡計算能力的一個衡量指標&#xff1b;2、FLOPS 每秒浮點運算次數&#xff0c;TFLOPS表示每…

零基礎不建議學前端_web前端開發零基礎怎樣入門-哈爾濱前端學習

web前端開發零基礎怎樣入門-哈爾濱前端學習&#xff0c;俗話說&#xff0c;知己知彼&#xff0c;百戰百勝。要想學好web前端&#xff0c;首先要了解什么是web前端&#xff0c;下面由小編來給大家介紹一下&#xff1a;1什么是web&#xff1f;Web就是在Http協議基礎之上, 利用瀏覽…

描述項目的典型用戶與場景

描述項目的典型用戶與場景 名字&#xff1a;小威 年齡&#xff1a;22 職業&#xff1a;學生 收入&#xff1a;無正式收入 知識層次和能力&#xff1a;大學 生活/工作情況&#xff1a;賣東西賺外快 動機&#xff0c;目的&#xff0c;困難&#xff1a;賣東西東西時需要計數 用戶比…

SpringBoot的配置項

2019獨角獸企業重金招聘Python工程師標準>>> spring Boot 其默認是集成web容器的&#xff0c;啟動方式由像普通Java程序一樣&#xff0c;main函數入口啟動。其內置Tomcat容器或Jetty容器&#xff0c;具體由配置來決定&#xff08;默認Tomcat&#xff09;。當然你也可…

北大OJ百練——4075:矩陣旋轉(C語言)

百練的這道題很簡單&#xff0c;通過率也達到了86%&#xff0c;所以我也就來貼個代碼了。。。下面是題目&#xff1a; 不過還是說一下我的思路&#xff1a; 這道題對一個新來說&#xff0c;可能是會和矩陣的轉置相混淆&#xff0c;這題并不是要我們去求矩陣的轉置。 這題&#…

編譯py-faster-rcnn全過程

編譯py-faster-rcnn&#xff0c;花費了好幾天&#xff0c;中間遇到好多問題&#xff0c;今天終于成功編譯。下面詳述我的整個編譯過程。 【注記&#xff1a;】其實下面的依賴庫可以安裝在統一的一個本地目錄下&#xff0c;相關安裝指南&#xff0c;可以參考《深度學習&#xf…

翻譯python語言命令_有道詞典命令行快速翻譯,Python編程的利器

本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。以下文章來源于Python實用寶典&#xff0c;作者Python實用寶典在編程時經常會遇到需要將中文詞匯翻譯成英文的情況。比如變量名的定義、取一個合適的函數…

不是世界不好,而是你見得太少

轉載于:https://www.cnblogs.com/yymn/p/4590333.html

MonoBehaviour.FixedUpdate 固定更新

function FixedUpdate () : void Description描述 This function is called every fixed framerate frame, if the MonoBehaviour is enabled. 當MonoBehaviour啟用時&#xff0c;其 FixedUpdate 在每一幀被調用。 FixedUpdate should be used instead of Update when dealing …

用Heartbeat實現web服務器高可用

用Heartbeat實現web服務器高可用heartbeat概述: Heartbeat 項目是 Linux-HA 工程的一個組成部分&#xff0c;它實現了一個高可用集群系統。心跳服務和集群通信是高可用集群的兩個關鍵組件&#xff0c;在 Heartbeat 項目里&#xff0c;由 heartbeat 模塊實現了這兩個功能。端口號…