leetcode 299.猜数字游戏

leetcode 299.猜数字游戏

原题传送门

题目描述

猜数字游戏-2020-09-15-16-10-30
不想用哈希,用哈希都没意思了。用两个数组就行了。 主要是如果找到两个共有的元素,并且位置不同的元素,就是B前面的系数。根据水桶原理,两者计数并且取最小值就是错误的个数,正确的个数直接比较就行了,时间复杂度O(n).
没有暴力哦!

class Solution {
public:
    string getHint(string secret, string guess) {

        // 寻找两个元素 共有的元素个数, 
        // 减去 匹配 的 个数 得到 错误的个数
        int s[10] = {0};
        int g[10] = {0};

        int right = 0;

        int n = secret.size();
        for (int i = 0; i < n; i ++ ){
            if (secret[i] == guess[i]) right ++ ;
            else {
                s[secret[i] - '0'] ++ ;
                g[guess[i] - '0'] ++ ;
            }
        }
        int wrong = 0;
        for (int i = 0; i < 10; i ++ ){
            // 最小的就是两个都有的。
            if (s[i] && g[i]) wrong += min(s[i], g[i]);
        }

        string ans = to_string(right) + "A" + to_string(wrong) + "B";
        return ans;

    }
};

喜欢的话,给博主赏一杯冰阔乐吧


  转载请注明: Maserhe leetcode 299.猜数字游戏

 上一篇
leetcode 538.把二叉搜索树转换为累加树 leetcode 538.把二叉搜索树转换为累加树
leetcode 538.把二叉搜索树转换为累加树原题传送门 题目描述 题解这是一个BST, 我们中序遍历的话,就是从小到大排序。中序遍历情况是,左子树,父节点,右子树。这样的遍历顺序。如果我们从 大到小排序呢,我们就可以,按照 右子树,
2020-09-22
下一篇 
leetcode 141.回文链表 leetcode 141.回文链表
leetcode 234.回文链表原题传送门 题目描述 讲解在这个题中,我们首先考虑到,直接开一个数组。将链表中元素全部存进去。然后再数组中用双指针两头遍历比较就行了,可是这个空间复杂度不是O(1)哎。据说面试时,如果用数组模拟,然后遍历比
2020-09-14
  目录