2024.7.13 刷题总结

2024.7.13

**每日一题**

3011.判断一个数组是否可以变为有序,这道题是一个简单的排序模拟题,首先我们需要写一个函数来判断一个十进制数在二进制下1的个数,我们用的方法是,每次将最小的1删除并且计数加1,具体做法是每次用x&x-1.r然后我们做一个排序模拟,遍历数组,如果该元素比右边元素大,那么我们就要先判断它们1的个数是否相同,不相同直接输出false,否则交换位置。但是遍历一遍不够,所以我们就遍历n次。

class Solution {
public:
   
    int count(int x){
        int cnt = 0;
        while(x){
            x&=x-1;
            cnt++;
        }
        return cnt;
    }
    
    bool canSortArray(vector<int>& nums) {
        int n =nums.size();
        bool flag= true;
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n-1;j++){
                if(nums[j]>nums[j+1]){
                    if(count(nums[j])!=count(nums[j+1])) return false;
                    else{
                        int temp = nums[j+1];
                        nums[j+1]=nums[j];
                        nums[j]=temp;
                    }
                }
            }
        }
        return flag;
    }
};

94.二叉树的中序遍历,这道题是一个简单的栈辅助遍历的题目,我们首先需要初始化一个答案数组和栈来辅助。然后根据中序遍历的意思,只要当前节点不为空或者栈不为空,就说明还有节点未遍历,我们就一直将root节点移动到它的左节点,直到变为空指针,这时候我们就可以将栈顶弹出,将该值加入答案数组,然后访问右节点,这样就实现了永远优先访问左节点,直到为空指针再访问中节点,再访问右节点,而当出现右节点也为空指针时,就会继续弹出栈顶的节点,继续向上遍历。栈里面只存放了所有左节点,而右节点需要手动遍历。

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
       vector<int> ans;
       stack<TreeNode*> stk;
       while(root!=nullptr||!stk.empty()){
        while(root!=nullptr){
            stk.push(root);
            root=root->left;;
        }
        root = stk.top();
        stk.pop();
        ans.push_back(root->val);
        root=root->right;
       }
       return ans;
    }
};

相关推荐

  1. LeetCode 总结 【未完待续】

    2024-07-14 20:48:01       62 阅读
  2. 假期打卡总结--2

    2024-07-14 20:48:01       55 阅读
  3. 4.23洛谷总结

    2024-07-14 20:48:01       32 阅读
  4. 4-22 算法思路总结

    2024-07-14 20:48:01       34 阅读
  5. 2024.6.10 总结

    2024-07-14 20:48:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 20:48:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 20:48:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 20:48:01       57 阅读
  4. Python语言-面向对象

    2024-07-14 20:48:01       68 阅读

热门阅读

  1. 安卓热门面试题二

    2024-07-14 20:48:01       18 阅读
  2. 单元化(Cell Sharding)

    2024-07-14 20:48:01       21 阅读
  3. 网络安全-网络设备及其配置1

    2024-07-14 20:48:01       21 阅读
  4. C++指针

    2024-07-14 20:48:01       23 阅读
  5. Tensor-LLM简单介绍

    2024-07-14 20:48:01       22 阅读
  6. cosyvocie 自回归模型忽大忽下问题解决方案

    2024-07-14 20:48:01       19 阅读
  7. k8s之client-go:golang与k8s交互的桥梁

    2024-07-14 20:48:01       23 阅读
  8. 使用harbor作为chart仓库实现内网部署

    2024-07-14 20:48:01       18 阅读