ARTS Week 21
阿新 • • 發佈:2022-01-16
Algorithm
本週的 LeetCode 題目為 33. 搜尋旋轉排序陣列
整數陣列 nums
按升序排列,陣列中的值 互不相同 。
在傳遞給函式之前,nums
在預先未知的某個下標 k
(0 <= k < nums.length
)上進行了 旋轉,使陣列變為 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]
(下標從0 開始計數)。例如, [0,1,2,4,5,6,7]
在下標 3 處經旋轉後可能變為 [4,5,6,7,0,1,2]
。
給你 旋轉後 的陣列 nums
和一個整數 target
,如果 nums
target
,則返回它的下標,否則返回 -1
。
輸入:nums = [4,5,6,7,0,1,2], target = 0
輸出:4
class Solution { public int search(int[] nums, int target) { if (nums.length == 1) { if (nums[0] == target) { return 0; } else { return -1; } } int left = 0; int right = nums.length - 1; int ans = -1; while (left < right) { if (nums[left] == target) { ans = left; break; } if (nums[right] == target) { ans = right; break; } int mid = left + (right - left) / 2; if (nums[mid] == target) { ans = mid; break; } if (nums[mid] >= nums[0]) { // nums[0], NOT nums[mid] if (target >= nums[0] && target < nums[mid]) { right = mid - 1; } else { left = mid + 1; } } else { if (target > nums[mid] && target < nums[right]) { left = mid + 1; } else { right = mid - 1; } } } return ans; } }
Review
本週 Review 的英文文章為:我希望我早點兒知道的一些事情
作者在文中介紹了他自己常用的一些軟體、工具等。下面是具體介紹:
- Anki:Anki 是一個免費的開源抽認卡程式,你可以利用它來幫你記住任何東西。
- Dextroamphetamine:是一種可以增強認知的興奮劑
- R:R語言可以有效地組織和視覺化資料
- sci-hub 和 Kindle、Z-Library、Calibre:sci-hub 可以免費獲取到很多科學論文;Kindle 是閱讀工具,你可以在 Z-Library 上找到很多想要的書,再通過 Calibre 來將這些書匯入到 Kindle 中
- 保持良好的開放判斷:你可以通過購買、閱讀大量書籍,來使得你更加理性並減少偏見認知的影響。
Tip
為什麼 printf
在呼叫後不會及時輸出?因為在預設情況下,輸出流 stdout
是有緩衝的,如果你想要立即輸出,那麼則需要重新整理流(使用 fflush
)或在 printf
中列印換行符:
// Method 1:
printf("Starting nets allocation...");
fflush(stdout);
// Method 2:
printf("Starting nets allocation...\n");
Share
看了上面的 Review 中的介紹,打算去試一試 Anki
這個軟體。