Power of Three

Given an integer, write a function to determine if it is a power of three.

class Solution(object):
    def isPowerOfThree(self, n):
        #while (n and (n % 3 == 0)):
            #n = n / 3
        #return n == 1
        
        
        #return (n > 0 and 1162261467 % n == 0)
        
        return (n > 0 and int(math.log10(n) / math.log10(3)) - math.log10(n) / math.log10(3) == 0)

Maximum Depth of Binary Tree

Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode* root)
    {
        if(root == NULL)
            return 0;  
        int res = 1;  
        int l = maxDepth(root->left);  
        int r = maxDepth(root->right);  
        return l > r? l + 1:r+ 1;  
    }
};

Contains Duplicate

Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

class Solution {
public:
    bool containsDuplicate(vector<int>& nums)
    {
        if(nums.empty())
            return false;
            
        set<int> s;
        vector<int>::iterator itr = nums.begin();
        
        while(itr != nums.end())
        {
            if(s.count(*itr) == 1)
                return true;
            s.insert(*itr);
            itr++;
        }
        return false;
    }
};

Power of two

Given an integer, write a function to determine if it is a power of two.

class Solution(object):
    def isPowerOfTwo(self, n):
        while (n and (n % 2 == 0)):
            n = n / 2
            
        return n == 1
        
        #Certainly,you can also use the following method
        #return (n and (n&(n-1))) == 0

Ugly number

Write a program to check whether a given number is an ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it includes another prime factor 7.
Note that 1 is typically treated as an ugly number.

class Solution(object):
    def isUgly(self, number):
        if number == 1:
            return True
        if number == 0:
            return False
        
        while(number % 2 == 0):
            number /= 2
        while(number % 3 == 0):
            number /= 3
        while(number % 5 == 0):
            number /= 5
    
        return number == 1

Ugly number II

Write a program to find the n-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
Note that 1 is typically treated as an ugly number.

class Solution(object):
    def min_three(self, a, b, c):
        minNum = min(a,b)
        return min(minNum,c)
    def nthUglyNumber(self, n):
        ugly = [1]
        factor2 = 2
        factor3 = 3
        factor5 = 5
        index2 = index3 = index5 = 0
        for i in range(1,n):
            minNum = min(factor2, factor3, factor5)
            ugly.append(minNum)
            if(factor2 == minNum):
                factor2 = 2 * ugly[index2+1]
                index2 += 1
            if(factor3 == minNum):
                factor3 = 3 * ugly[index3+1]
                index3 += 1
            if(factor5 == minNum):
                factor5 = 5 * ugly[index5+1]
                index5 += 1
        return ugly[n-1]

Bulls and Cows

You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide a hint that indicates how many digits in said guess match your secret number exactly in both digit and position (called “bulls”) and how many digits match the secret number but locate in the wrong position (called “cows”). Your friend will use successive guesses and hints to eventually derive the secret number.
For example:

Secret number: “1807”
Friend’s guess: “7810”

Hint: 1 bull and 3 cows. (The bull is 8, the cows are 0, 1 and 7.)
Write a function to return a hint according to the secret number and friend’s guess, use A to indicate the bulls and B to indicate the cows. In the above example, your function should return “1A3B”.
Please note that both secret number and friend’s guess may contain duplicate digits, for example:

Secret number: “1123”
Friend’s guess: “0111”

In this case, the 1st 1 in friend’s guess is a bull, the 2nd or 3rd 1 is a cow, and your function should return “1A1B”.
You may assume that the secret number and your friend’s guess only contain digits, and their lengths are always equal.

class Solution {
public:
    string getHint(string secret, string guess)
    {
        int cntA = 0, cntB = 0;
        unordered_map<char, int> hash;
        vector<bool> tag(secret.size(), false);
        
        for (auto a : secret)
        {
            ++hash[a];
        };
        
        for (int i = 0; i < secret.size(); ++i)
        {
            if (secret[i] == guess[i])
            {
                ++cntA;
                --hash[secret[i]];
                tag[i] = true;
            }
        }
        for (int i = 0; i < guess.size(); ++i)
        {
            if (!tag[i] && hash[guess[i]] > 0)
            {
                ++cntB;
                --hash[guess[i]];
            }
        }
        return to_string(cntA) + "A" + to_string(cntB) + "B";
    }
};

美好时光

今年学校放假确实放的挺早的,再加上我的室友们一个个归心似箭,目前我已经成功进入假期单刷的副本了。
虽然每年寒暑假都要留校,但总有那么几天需要适应一下的。于是打算给自己找点事情做,以下是我之前臆想的清单,然而我觉得应该做不完~

  • 再刷一遍算法导论和C++ Primer(后来想了想,detour…)
  • 搞一个扎古拼起来(唔,这个可能耗时会有点长,而且我还没有喷枪,暂时搁浅…)
  • 程序员面试宝典(本来以为很精深,结果…..写本文的时候已刷完)
  • 骑车去洋湖湿地(自从换了不怎么兼容的影子后拨,掉链子简直家常便饭~)
  • 如果回成都的话,打算去鹅厂搅基(这个愿望,我为什么要去搅基啊!)
  • 去看GIF,膜拜大神,顺便给信仰充个值(即将实现,明天就杀去帝都.)
  • MCM大爷求给个M奖(当然,你要是想给O或者F,我也笑纳)
  • 去酒仙桥找HackRF(就算找到了,那么贵我也买不起~)
  • 单刷一只烤鸭(一个食科生的尊严)
  • 看看双十一作死买的那些书(顺便谁能告诉我,哪里有收书的~)

其实还有好多想要去做的事情,真的只能一点一点去完成了。昨天晚上搭了这个站,希望可以记录我假期的生活,我也会坚持每天都写点东西出来的。
Continue reading