兩個數之和等于第三個數

? ? ? 這是一個很好的算法題,解法類似于快速排序的整理方法。同時,更為值得注意的是這道題是 人人網2014校園招聘的筆試題,下面首先對題目進行描述:

? ? ? 給出一個有序數組,另外給出第三個數,問是否能在數組中找到兩個數,這兩個數之和等于第三個數。

? ? ? 我們首先看到第一句話,這個數組是有序的,所以,我們可以定義兩個指針,一個指向數組的第一個元素,另一個指向應該指向的位置(這個需要看具體的實現和數組給定的值),首先計算兩個位置的和是否等于給定的第三個數,如果等于則算法結束,如果大于,則尾指針向頭指針方向移動,如果小于,則頭指針向尾指針方向移動,當頭指針大于等于尾指針時算法結束,沒有找到這樣的兩個數。

? ? ? 它看起來就好像下面這張圖一樣:


? ? ? 下面給出具體的實現:

?

#include <stdio.h>int judge(int *a, int len, int k, int *num1, int *num2);int main(int argc, char **argv)
{int test_array[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};int result = -1;int num1, num2;result = judge(test_array, sizeof(test_array) / sizeof(int), 12, &num1, &num2);if(result == 0){printf("%d\t%d\n", num1, num2);}else if(result == -1){printf("can't find");}else{printf("error");}
}int judge(int *a, int len, int k, int *num1, int *num2)
{int *low = NULL;int *high = NULL;int i = 0;int result = -1;if(a == NULL || len < 2){return result;}if(a[0] >= k){return result;}while(a[i] <= k && i < len){i++;}low = a;high = a + i - 1;while(low  < high){*num1 = *low;*num2 = *high;if((*low + *high) == k){result = 0;break;}else if((*low + *high) > k){high--;}else if((*low + *high) < k){low++;}}return result;
}


? ? ? 這樣就以高效的方法得到了結果。

?

?

轉載于:https://www.cnblogs.com/james1207/p/3324943.html

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

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

相關文章

html標題前色塊,CSS輕松實現色塊標題標識

不少網站開始采用韓式風格來建站&#xff0c;這種風格的特點是色彩變化豐富、應用Flash動畫合理、結構新穎&#xff0c;最明顯的特點就是表格或標題欄常會加上一條橫或豎的色帶&#xff0c;如圖1中圈起來的地方就是這樣。(圖一)一般人都會想到用Photoshop等軟件來完成這樣的效果…

Git 基礎 - 遠程倉庫的使用

遠程倉庫的使用 要參與任何一個 Git 項目的協作&#xff0c;必須要了解該如何管理遠程倉庫。遠程倉庫是指托管在網絡上的項目倉庫&#xff0c;可能會有好多個&#xff0c;其中有些你只能讀&#xff0c;另外有些可以寫。同他人協作開發某個項目時&#xff0c;需要管理這些遠程倉…

山東理工大學第七屆ACM校賽-G 飛花的傳送門

G - 飛花的傳送門飛花壕最近手頭比較寬裕&#xff0c;所以想買兩個傳送門來代步&#xff08;夏天太熱&#xff0c;實在是懶得走路&#xff09;。平面上有N個傳送門&#xff0c;飛花壕想要挑兩個距離最遠的傳送門帶回家&#xff08;距離為歐幾里得距離&#xff0c;即兩點之間直線…

leetcode 1002. 查找常用字符

給定僅有小寫字母組成的字符串數組 A&#xff0c;返回列表中的每個字符串中都顯示的全部字符&#xff08;包括重復字符&#xff09;組成的列表。例如&#xff0c;如果一個字符在每個字符串中出現 3 次&#xff0c;但不是 4 次&#xff0c;則需要在最終答案中包含該字符 3 次。 …

git 代理 git_如何成為Git專家

git 代理 gitI made a mistake in my commit, how do I fix it ?我在提交中犯了一個錯誤&#xff0c;該如何解決&#xff1f; My commit history is a mess, how do I make it neater?我的提交歷史是一團糟&#xff0c;我如何使其更整潔&#xff1f; If you have ever had …

101與金根回顧敏捷個人:(13)敏捷個人和敏捷開發

本文更新版本已挪至 http://www.zhoujingen.cn/blog/1726.html ------------------------- 敏捷個人源于工作 自2001初成立了敏捷聯盟到現在10年的推廣&#xff0c;敏捷開發已日漸成為當前IT行業軟件開發的一種主流方法。沒有銀彈&#xff0c;任何方法都不可能解決所有問題&a…

計算機網絡選擇重傳,計算機網絡選擇重傳協議實驗報告..docx

計算機網絡選擇重傳協議實驗報告.《計算機網絡》選擇重傳協議實驗報告1.實驗內容和實驗環境描述實驗內容&#xff1a;利用所學數據鏈路層原理&#xff0c;設計一個滑動窗口協議&#xff0c;在仿真環境下編程實現有噪音信道環境下兩站點之間無差錯雙工通信。信道模型為8000bps 全…

leetcode 劍指 Offer 03. 數組中重復的數字

找出數組中重復的數字。 在一個長度為 n 的數組 nums 里的所有數字都在 0&#xff5e;n-1 的范圍內。數組中某些數字是重復的&#xff0c;但不知道有幾個數字重復了&#xff0c;也不知道每個數字重復了幾次。請找出數組中任意一個重復的數字。 示例 1&#xff1a; 輸入&…

【Maven學習】Maven打包生成包含所有依賴的jar包

http://blog.csdn.net/u013177446/article/details/54134583 ************************************************** maven打包生成的普通jar包&#xff0c;只包含該工程下源碼編譯結果&#xff0c;不包含依賴內容。同時&#xff0c;maven提供以下方式生成包含所有依賴的jar文件…

mysql 數據庫 安全_如何確保您MySQL數據庫安全

mysql 數據庫 安全我們開始之前的一些基本信息&#xff1a; (Some basic information before we get started:) Source: Center for Internet Security’s (CIS) Oracle MySQL Community Server 5.7來源&#xff1a; 互聯網安全中心(CIS)Oracle MySQL Community Server 5.7 Op…

Exchange server 2010系列教程之三 發送郵件測試

最近有些忙&#xff0c;好幾天沒有上來寫教程了&#xff0c;接著往下寫吧。就當是自己的學習筆記&#xff0c;呵呵&#xff0c;有不到之處&#xff0c;還請大家多多指教。 上一篇我們已經把服務器架設好了&#xff0c;那么我們來測試一下發送郵件。 1.首先在AD DC上面新建一個域…

如何用計算機掃描圖片變成文字,怎么掃描圖片上的文字-華為手機黑科技"文字掃描儀",3秒就能將紙質文檔轉成電子檔,牛...

現如今&#xff0c;手機已經成為我們使用率最高的電子設備之一了。手機雖小&#xff0c;但是功能可是五花八門&#xff0c;很多手機的功能&#xff0c;可能我們使用幾年&#xff0c;都沒有發現過。今天就給大家介紹華為手機中&#xff0c;非常強大的一項黑科技“文字掃描儀”。…

第一步:編輯器選擇

對于c/c的學習已經進一年的時間了&#xff0c;現在想開始好好換一個文本編輯器&#xff0c;然后慢慢的學習&#xff0c;隨著時間的增加而不斷增加。兩款頗有爭議的軟件是Vim和emacs&#xff0c;兩者之間的選擇其實對于初學者的我還是比較困難的&#xff0c;Vim在原來有點接觸過…

leetcode116. 填充每個節點的下一個右側節點指針(dfs)

代碼 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _left;right _ri…

react銷毀方法鉤子0_React鉤子:使用React狀態的新方法

react銷毀方法鉤子0Updated: With React 16.8, React Hooks are available in a stable release!更新&#xff1a;隨著React 16.8的發布&#xff0c; React Hooks已經發布&#xff01; Outdated: Hooks are still an experimental proposal. They’re currently in React v16.…

Linux下安全審計工具 lynis 使用說明

官網&#xff1a;https://cisofy.com/download/lynis/ 下載解壓后&#xff0c;執行./lynis -Q即可&#xff0c;稍等片刻自動生成一份檢測報告。可以根據檢測報告看哪里不足進行改進即可。 本文轉自 lirulei90 51CTO博客&#xff0c;原文鏈接&#xff1a;http://blog.51cto.com/…

課堂訓練

1.對于可能的變更是否能制定應急計劃&#xff1f; 可以制定 例如一款app的開發&#xff0c;在制作app之前會對app的功能性進行一個規劃&#xff0c;想的比較全面就能很好應對變更。 2.員工是否能夠有效地處理意料之外的工作請求&#xff1f; 能夠處理 對于工作能力極強的員工而…

Google 實用搜索技巧

孔子曰&#xff1a;“工欲善其事&#xff0c;必先利其器。居是邦也&#xff0c;是其大夫之賢者&#xff0c;友其示支仁者。”——語出《論語衛靈公》 1. Google搜索固定格式的文檔 Google支持特定格式文檔的搜索&#xff08;“filetype:”就是它的搜索語法&#xff09;&#xf…

華科的計算機和建筑學哪個強,華中科技大學和華南理工大學相比,誰更占優勢?看了也許就知道了...

大學是學生接受教育的過程中非常重要的一個階段&#xff0c;很多學生都會盡可能在高考中&#xff0c;考出更好的成績&#xff0c;爭取報考一個更好的大學。為了提升教育水平&#xff0c;我國到目前為止建設了超過3000所大學&#xff0c;其中有很多高等院校非常相似&#xff0c;…

c#+handle.exe實現升級程序在運行時自動解除文件被占用的問題

我公司最近升級程序經常報出更新失敗問題&#xff0c;究其原因&#xff0c;原來是更新時&#xff0c;他們可能又打開了正在被更新的文件&#xff0c;導致更新文件時&#xff0c;文件被其它進程占用&#xff0c;無法正常更新而報錯&#xff0c;為了解決這個問題&#xff0c;我花…