1. 程式人生 > 其它 >linux解密shadow_Linux密碼檔案passwd和shadow分析

linux解密shadow_Linux密碼檔案passwd和shadow分析

給定一個整數陣列 nums和一個整數目標值 target,請你在該陣列中找出 和為目標值 target 的那兩個整數,並返回它們的陣列下標。

你可以假設每種輸入只會對應一個答案。但是,陣列中同一個元素在答案裡不能重複出現。

你可以按任意順序返回答案。

示例 1:

輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:

輸入:nums = [3,2,4], target = 6
輸出:[1,2]
示例 3:

輸入:nums = [3,3], target = 6
輸出:[0,1]

提示:

2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
只會存在一個有效答案
進階:你可以想出一個時間複雜度小於 O(n2) 的演算法嗎?

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/two-sum
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

 1 import java.util.HashMap;
 2 import java.util.Map;
 3 
 4 class Solution {
 5     public int[] twoSum(int[] nums, int target) {
 6         int[] indexs = new int[2];
 7         
 8         // 建立k-v ,一一對應的雜湊表
 9
HashMap<Integer,Integer> hash = new HashMap<Integer,Integer>(); 10 for(int i = 0; i < nums.length; i++){ 11 if(hash.containsKey(nums[i])){ 12 indexs[0] = i; 13 indexs[1] = hash.get(nums[i]); 14 return indexs; 15
} 16 // 將資料存入 key為補數 ,value為下標 17 hash.put(target-nums[i],i); 18 } 19 // // 雙重迴圈 迴圈極限為(n^2-n)/2 20 // for(int i = 0; i < nums.length; i++){ 21 // for(int j = nums.length - 1; j > i; j --){ 22 // if(nums[i]+nums[j] == target){ 23 // indexs[0] = i; 24 // indexs[1] = j; 25 // return indexs; 26 // } 27 // } 28 // } 29 return indexs; 30 } 31 }