美文网首页
Day10和为s的两个数字+扑克牌中的顺子+二叉树的镜像

Day10和为s的两个数字+扑克牌中的顺子+二叉树的镜像

作者: 吃掉夏天的怪物 | 来源:发表于2021-06-22 11:10 被阅读0次

    终于第十天了,好巧不巧三道简单题hhh

    TODO:

    1. 注意 :和为s的两个数字可以用双指针的方法
    2. 重新做扑克牌中的顺子
    3. 熟练使用递归

    剑指 Offer 57. 和为s的两个数字(简单)

    美团面试就考了这道题,做的很垃圾。刚做了一下看了时间效率...oh 突然知道为什么不行了...
    这题可以双指针啊!!💔面试用的unordered_map,刚做的那遍用的set

    class Solution {
    public:
        vector<int> twoSum(vector<int>& nums, int target) {
            int i = 0, j = nums.size()-1;
            while(i < j){
                int temp = nums[i] + nums[j];
                if(temp == target) return {nums[i],nums[j]};
                else if(temp < target){i++;}
                else {
                    j--;
                }
               
            }
            return {};
    
        }
    };
    

    剑指 Offer 61. 扑克牌中的顺子(简单)

    emmm一不小心看了题解。5 张牌是顺子的 充分条件①除大小王外,所有牌 无重复(因为大小王可以成为任何牌 ;②设此 5 张牌中最大的牌为max ,最小的牌为 min (大小王除外),则需满足:
    max - min < 5,一旦大于5,如1,0,0,0,6即使剩下的都是大小王也不够补

    class Solution {
    public:
        bool isStraight(vector<int>& nums) {
            vector<int> map(14);        //构建哈希集合
            int minValue = 15, maxValue = 0;
            for(int n : nums) 
            {
                if(map[n] >= 1) return false;   //重复数字,出错
                if(n == 0)  continue;           //遇到大小王,跳过
                minValue = min(minValue, n);
                maxValue = max(maxValue, n);
                ++map[n];
            }
            return maxValue - minValue <= 4;    
        }
    };
    

    剑指 Offer 27. 二叉树的镜像(简单)

    这种题一看就开始害怕,不过得先整理清楚思路。应该是一个简单递归,虽然做出来了,但是做了还挺久...

    class Solution {
    public:
        TreeNode* newroot;
        TreeNode* mirrorTree(TreeNode* root) {
            if(root == nullptr) return nullptr;
            newroot = Treebuild(root,newroot);
            return newroot;
        }
       TreeNode* Treebuild(TreeNode* root, TreeNode* newroot){
            if(root == nullptr) return nullptr;
            newroot = new TreeNode(root->val);
            newroot->left = root->right != nullptr?Treebuild(root->right,newroot->right):nullptr;
            newroot->right = root->left != nullptr?Treebuild(root->left,newroot->left):nullptr;
            return newroot;
        }
    };
    

    效果似乎也一般:


    image.png

    就很玄学,注释了一句后就100%,总觉得不应该影响效率才是,毕竟都执行不到那一句


    image.png

    题解没有新建一棵树,就是在原来的树上进行镜像:
    剑指 Offer 27. 二叉树的镜像(递归 / 辅助栈,清晰图解)(https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/solution/mian-shi-ti-27-er-cha-shu-de-jing-xiang-di-gui-fu-/)

    相关文章

      网友评论

          本文标题:Day10和为s的两个数字+扑克牌中的顺子+二叉树的镜像

          本文链接:https://www.haomeiwen.com/subject/luvuyltx.html