iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 23
0

一個失敗的例子。
上 LeetCode 去練習程式邏輯,人家說所謂的 bug 就是思考上的缺陷。有時候方法能解,但是思考角度不對,其實就會在測試中出現問題。

下面的例子是給定一個陣列,真一個目標,找尋是否陣列裡有一對元素,相加等於目標數字。

在這個例子中,當如果輸入兩個不同數字,結果正確。但如果兩個數字相同,就會出現錯誤。

var nums = [3,3]
var target = 6

var twoSum = function(nums, target) {
    for (var i = 1; i < target ; i++)
    if (nums.indexOf(i) + 1 && nums.indexOf(target - i) + 1) {
       return [nums.indexOf(i), nums.indexOf(target - i)]
    } else {
		if( i == target - 1) {
		  return console.log("Sorry")
        }       
    }
};

而正確的作法應該要用兩個迴圈。以下為pseudocode,明天再繼續挑戰不同題目。

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] == target - nums[i]) {
                return new int[] { i, j };
            }
        }
    }
    throw new IllegalArgumentException("No two sum solution");
}

上一篇
一個 JS 學習者的日常 day 21
下一篇
一個 JS 學習者的日常 day23
系列文
一個 JS 學習者的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言