国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

和為S的兩個數字

2019-11-08 18:51:57
字體:
來源:轉載
供稿:網友

題目描述

輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等于S,輸出兩個數的乘積最小的。

輸出描述:

對應每個測試案例,輸出兩個數,小的先輸出。

算法解析: 對于一個遞增的有序數組,我們如果從頭到尾暴力掃描,那就十分不智,如果我們將兩個標志位分別設在開頭和結尾,如果這兩個標志位的和小于S,則將small向后移動,如果標志位的和大于s,則big前移,如果相等,我們就考慮這兩個數的乘積,rank后決定是否更新結果。

代碼如下:

public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { int small = 0; int big = array.length - 1; ArrayList<Integer> result = new ArrayList<>(); if (array == null || array.length < 1){ return result; } while (small < big){ int check = array[small] + array[big]; if (check == sum){ if (result.size() == 0){ result.add(array[small]); result.add(array[big]); }else{ check = result.get(0) * result.get(1); if (check > (array[small] * array[big])){ result.clear(); result.add(array[small]); result.add(array[big]); } } small ++; }else if (check > sum){ big --; }else{ small ++; } } return result; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼海市| 南开区| 华宁县| 阿克陶县| 蓝田县| 深泽县| 北流市| 陕西省| 东山县| 门头沟区| 喀什市| 岳阳县| 波密县| 大兴区| 读书| 彰武县| 阳东县| 揭东县| 武胜县| 达孜县| 遵义县| 青川县| 罗定市| 广灵县| 大厂| 苏尼特右旗| 翁源县| 福建省| 青龙| 苍山县| 靖边县| 轮台县| 磐石市| 渝中区| 甘南县| 阿城市| 尉氏县| 穆棱市| 泸西县| 彭州市| 尚义县|