ARTS Week 21
Posted 萌新阿岩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARTS Week 21相关的知识,希望对你有一定的参考价值。
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
这个软件。
以上是关于ARTS Week 21的主要内容,如果未能解决你的问题,请参考以下文章