成功人士从不刷Leetcode(2) - 知乎书馆 - 知乎专栏



成功人士从不刷Leetcode(2) - 知乎书馆 - 知乎专栏

提示:一堆石子,每次拿1~3个,自己先拿,两个人轮流拿,谁先拿到最后一个谁就算赢。其中一种必胜的策略是,对方拿n个,自己就拿4-n个——因此如果保证自己赢,必须要保证自己拿掉石头,使剩下的石头数量n满足:n%4==0——也就是开始的时候,石头数量必须不是4的倍数。

class Solution { public:     bool canWinNim(int n) {         return (n%4 != 0);     }  }; 

338. Counting Bits(leetcode.com/problems/c

提示:如果每个数,则总共需要时间是O(nlog(n))的时间。按照提示,提供一个O(n)的解法。如果已知1~2^N的bits结果为[a1,a2,..., a2^N-1,a2^N],那么从2^N+1~2^(N+1)的bits数量分别为[a1+1, a2+1, ..., (a2^N-1)+1, 1],即后2^N个数中,前N-1为从1~2^N-1的bits数量+1,而最后一个为1。一个recursive的详细方法是:

a. 判断num的最大2次幂int p = floor(log(num) / log(2));

b. 如果num==pow(2,p),即num是2的整数次幂,则取prev=countBits(pow(2,p-1));,然后在prev后添加num/2~num,并把最后一位数换成1;


Read full article from 成功人士从不刷Leetcode(2) - 知乎书馆 - 知乎专栏


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts