Java

【算法学习】二分查找算法

二分查找算法用于在一列已排序的数组中找出一个数的位置。 假设下面有一列已排序的数:[a1,a2,a3,a4,...an],有a1<=a2<=a3<=a4<=...<=an 当我们要查询一个数a是否在数组中,直接的办法就是一个个比对,找到了即返回所在位置,没找到就返回-1;这种方法的时间复杂度是O(n)。 设有n个数,二分查找是先找数组[1..n]中间的那个数M,设其位置为i 1. 如果a比M小,则a肯定在M的左边,下一轮查数组[1..i-1]; 2. 如果a比M大,那a肯定在M的右边,

  • zgljl2012
1 min read
leetcode

【LeetCode】292. Nim Game

问题链接:https://leetcode.com/problems/nim-game/ 尼姆游戏,一堆石子放在桌子上,两个人轮流拿,一次可以拿1-3颗石子,谁拿走最后一颗谁就赢了。 如4颗石子时,先手无论拿几颗,都会输了博弈,因为他至少得拿1颗,剩下的就是3颗,后手可一次全拿获胜。所以如果一堆石子放在桌子上,如果轮到这个人的时候面对的是4颗石子,那他肯定输,而另一个人肯定赢。 代码: public boolean canWinNim(int n) { return !(n%4==0); }

  • zgljl2012
1 min read
zgljl2012@gmail.com