1. 程式人生 > >和為s的兩個數字(Java實現)

和為s的兩個數字(Java實現)

本題為劍指offer面試題41 題目1

牛客網測試地址:https://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b

[程式設計題]和為S的兩個數字
  • 熱度指數:43146時間限制:1秒空間限制:32768K
輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。
輸出描述:
對應每個測試案例,輸出兩個數,小的先輸出。

package go.jacob.day514;

import java.util.ArrayList;

/*
 * 首先定義兩個指標,第一個指向陣列的第一個元素,第二個指向陣列最後一個元素
 * 如果兩個元素和大於sum,第二個指標前移,反之第一個指標後移,直至和等於sum
 */
public class Demo2 {
	public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		//魯棒性判斷
		if (array == null || array.length < 2)
			return list;
		boolean flag = false;
		int i = 0, j = array.length - 1;
		int tmpSum;
		while (i < j) {
			tmpSum = array[i] + array[j];
			if (tmpSum == sum) {
				flag = true;
				break;
			} else if (tmpSum > sum)
				j--;
			else
				i++;
		}
		if (flag) {
			list.add(array[i]);
			list.add(array[j]);
		}
		return list;
	}
}

相關推薦

s數字Java實現

本題為劍指offer面試題41 題目1 牛客網測試地址:https://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d1949131

《劍指offer》系列 S數字Java

連結 牛客:和為S的兩個數字 題目描述 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 思路 初始化兩個指標分別是第一個和

劍指offer:s數字java

/** * 題目: * 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S, * 如果有多對數字的和等於S,輸出兩個數的乘積最小的 * 解題思路: * 具體見程式碼 */ import java.util

劍指Offer - S的連續正數序列(Java實現)

題目描述: 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題

數組中只出現一次的數字java實現

num 整型 根據 長度 問題 程序 oid [] 情況 問題描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了偶數次。請寫程序找出這兩個只出現一次的數字。 解題思路 如果數組中只有一個數字出現奇數次,則將數組中所有的數字做異或可得該數字。 數組中有兩個數

常見連結串列操作-刪除連結串列倒數第n節點JAVA實現

問題 給出一個單向連結串列,刪除該連結串列倒數第n個節點,並返回頭節點。 例如: 給出連結串列 1->2->3->4->5,n=2 返回連結串列 1->2->3->5 解題思路 最容易想到的演算法: 先遍歷一次連結串列,

TCPUDP套接字程式設計 java實現

在瞭解網路程式設計之前,我們先了解一下什麼叫套接字 套接字即指同一臺主機內應用層和運輸層之間的介面 由於這個套接字是建立在網路上建立網路應用的可程式設計介面 因此也將套接字稱為應用程式和網路之間的應用程式程式設計介面!   關於TCP和UDP這裡就不作太多介紹了,我們知道TCP是面向連

面試題3:陣列中重複的數字Java 實現

題目一:在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是重複的數字2或者3。 方法一:時間

劍指offer之陣列中重複的數字Java實現

1. 陣列中重複的數字 題目描述 在一個長度為 n 的數組裡的所有數字都在 0 到 n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的,也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 Input: {2, 3, 1, 0, 2,

leetcode連結串列題--刪除連結串列的倒數第N節點java實現

原題 給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。 示例: 給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了

《劍指offer》- 面試題3:陣列中重複的數字java實現

題目一:         在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是重複

在單鏈表中刪除倒數第k節點java實現

實現方式很多,在這裡只說兩種實現方式。看不懂時候,大家可以畫畫圖,對理解為什麼很有幫助。 第一種方式: 1.首先判斷K值和連結串列是否為空,如果k<=0,或連結串列為空,直接返回head; 2.滿足上面條件後,定義ListNode P=head,重頭

將陣列元素迴圈右移k位置Java實現

用四種方法實現了將陣列元素迴圈右移k個位置,相關的解釋作為註釋放在程式碼裡面了。 package movearrayelement; import java.util.BitSet; public class MoveArrayElement { /** * 每次

二叉搜尋樹的第k結點Java實現

本題為劍指offer面試題63 [程式設計題]二叉搜尋樹的第k個結點 熱度指數:40095  時間限制:1秒  空間限制:32768K 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如, 5

劍指offer:S數字python

題目描述輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。輸出描述:對應每個測試案例,輸出兩個數,小的先輸出。# -*- coding:utf-8 -*- class Solution: d

java--Fibonacc由數字1、1、2、3...組成的,從第三個數字起每一個數字為兩個數字。建立一個方法,接受一個整數引數,顯示從第一元素開始總共由該引數指定的個數所構成的所有斐波那契數

題目完整描述:一個斐波那契數列是由數字1、1、2、3、5、8、13、21、34等等組成的,其中每一個數字(從第三個數字起)都是前兩個數字的和。建立一個方法,接受一個整數引數,並顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數字。例如,如果執行 java Fibonacci 5(Fib

劍指Offer面試題41:求和s數字;求和s的連續正數序列 Java實現

題目一:輸入一個遞增排序的陣列和一個數字s,在陣列中找兩個數,使得他們的和剛好是s.如果有多對數字的和等於s,則輸出任意一對即可。例如,輸入陣列{1,2,4,7,11,15}和數字15,則輸出4和11(4+11=15)。 演算法分析: 首先,我們會想到在陣列中固定一個數

寫一個函式返回引數二進位制中1的個數+獲取一個數二進位制序列中所有的偶數位奇數位,分別輸出二進位制序列+輸出一個整數的每一位+兩個int32位整數mn的二進位制表達中,有多少個位(bit)不同

寫一個函式返回引數二進位制中 1 的個數 比如: 15 0000 1111 4 個 1 #include <stdio.h> #include <windows.h> /* 寫一個函式統計一個數二進位制形式下 1 的個數 */ //統計 1 的個數 int C

C語言實現 int32位整數mn的二進位制表達中,有多少個位(bit)不同?

輸入例子: 1999 2299 輸出例子:7 int main() { int a = 0; int b = 0; int num = 0; int count = 0; printf("請輸入兩個整數:"); scanf("%d%d",&a,&b); n

劍指offer之連結串列的第一公共點Java實現

兩個連結串列的第一個公共點 輸入兩個連結串列,找出它們的第一個公共結點 思路:我們先遍歷找到兩個連結串列的長度m和n, 如果m大,m比n大多少,比如說k,那麼先讓m先走k步,然後n和m再一起走。