大四,即將面臨畢業(yè)失業(yè)養(yǎng)家糊口雙十一想剁手缺無手可剁的尬尷場面,雖然我知道其實(shí)是我太咸魚尤仍。荒廢時(shí)間罷了婿崭。
其實(shí)早就想寫一些東西記錄學(xué)習(xí)過程了,順便還可以復(fù)習(xí)一下肴颊,你懂的氓栈,懶。
所以現(xiàn)在打算從基礎(chǔ)學(xué)習(xí)Java苫昌,有不足之處還請大佬指正颤绕。
今天下定決心的原因來自一道leetcode的最簡單的一道題:兩數(shù)之和
給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,請你在該數(shù)組中找出和為目標(biāo)值的那 兩個(gè) 整數(shù)祟身,并返回他們的數(shù)組下標(biāo)奥务。
你可以假設(shè)每種輸入只會(huì)對應(yīng)一個(gè)答案。但是袜硫,你不能重復(fù)利用這個(gè)數(shù)組中同樣的元素氯葬。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因?yàn)?nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/two-sum
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)婉陷,非商業(yè)轉(zhuǎn)載請注明出處帚称。
其實(shí)題不是很難官研,代碼如下
public class Solution {
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] + nums[i] == target) {
return new int[] { i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
解決思路也很簡單,遍歷每個(gè)元素作和就完了闯睹,但有一行代碼看不懂了
throw new IllegalArgumentException("No two sum solution");
如果沒有這一行代碼會(huì)報(bào)錯(cuò)戏羽,提示你方法必須返回一個(gè)int數(shù)組,但是我已經(jīng)在方法中返回了一個(gè)數(shù)組楼吃,為什么就會(huì)報(bào)錯(cuò)呢始花?
先看這個(gè)異常吧,方法參數(shù)異常孩锡,后來想了一下酷宵,我返回的數(shù)組是在循環(huán)里的,一旦這個(gè)循環(huán)不能執(zhí)行躬窜,或者if條件不滿足浇垦,當(dāng)然沒有返回值了,所以用到異常來處理這個(gè)問題荣挨,如果我nums[]只有一個(gè)元素或者通通不滿足if條件男韧,我就用異常來處理,順便給出提示信息"No two sum solution"默垄。
然后因?yàn)槲易约夯A(chǔ)不夠扎實(shí)煌抒,還有個(gè)小問題:
在一開始的時(shí)候,我是這么寫的
System.out.println(Arrays.toString(solution.twoSum(int[] nums ={2,3,4},5)));
還有一些錯(cuò)誤寫法比如說
System.out.println(Arrays.toString(solution.twoSum(int[] nums = {2,3,7}, int target=5)));
這么寫是不對的厕倍,數(shù)組屬于引用型變量,當(dāng)參數(shù)是引用型變量時(shí)贩疙,“傳值”傳遞的是變量中放的“引用”讹弯,而不是變量所引用的實(shí)體。還有數(shù)組的初始化也不能在這里完成这溅∽槊瘢或者說對變量的聲明不能放在這里。
測試部分:
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution solution=new Solution();
int[] nums = {2,3,7};
int target=5;
System.out.println(Arrays.toString(solution.twoSum(nums, target)));
}
總結(jié)
自己的基礎(chǔ)還需還加強(qiáng)悲靴,好多東西可能都沒注意或者忘記了
還是重頭來吧臭胜。
補(bǔ)一個(gè)自學(xué)網(wǎng)站http://how2j.cn/(看起來挺全的,具體還沒跟著學(xué)過)