当前位置: 首页 > news >正文

38.日常算法

1.最短无序连续子数组

题目来源
给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。

示例 1:
输入:nums = [2,6,4,8,10,9,15]
输出:5
解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。

class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
        int left = 0;
        int minx = INT_MAX;
        // 找左端点,表示以left右的数组已经排好序了
        // 如果右边已经排好序了,num[i]一定会小于右边排好序的最小值
        for (int i = nums.size() - 1; i >= 0; --i){
            minx = min(nums[i], minx);
            if (nums[i] > minx) left = i;
        }
        // 找右端点,表示以right左的数组已经排好序了
        // 如果左边已经排好序了,num[i]一定会大于左边排好序的最大值
        int right = -1;
        int maxx = INT_MIN;
        for (int i = 0; i < nums.size(); ++i){
            maxx = max(maxx, nums[i]);
            if (nums[i] < maxx) right = i;
        }
        return right == -1 ? 0 : right - left + 1;
    }
};

1. 螺旋矩阵 II

题目来源
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        int maxnum = n * n;
        vector<vector<int>> diction = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
        vector<vector<int>> ret(n, vector<int>(n));
        int idx = 0;
        int row = 0, col = 0;
        for (int i = 1; i <= maxnum; ++i){
            ret[row][col] = i;
            int newrow = row + diction[idx][0], newcol = col + diction[idx][1];
            if (newrow >= n || newrow < 0 || newcol >= n || newcol < 0 || ret[newrow][newcol] != 0){
                ++idx;
                idx %= 4;
            }
            row = row + diction[idx][0], col = col + diction[idx][1];
        }
        return ret;
    }
};

相关文章:

  • 智能协同:数据集成平台与DeepSeek驱动的数据分析与智能调度革新
  • SQL项目
  • 如何用CSS解决边距合并问题?
  • Linux 基础IO——重定向和缓冲区
  • learn_pytorch03
  • 8、k8s的pv和pvc
  • MATLAB中contains函数用法
  • TLQ-CN10.0.2.0 (TongLINK/Q-CN 集群)部署指引 (by lqw)
  • 《探秘Downpour SGD算法:原理与多元应用场景解析》
  • 基于角色访问控制的UML 表示
  • 网络营销新宠:http代理ip为广告投放精准定位保驾护航
  • 网络安全中的account和audit区别
  • 变频器MODBUS RTU通信
  • Nginx 之Rewrite 使用详解
  • 若依 ruoyi-vue 隐藏字典样式
  • Excel常用操作
  • 算法之 跳跃游戏
  • Java进阶,时间与日期,包装类,正则表达式
  • 学习《人工智能的未来》这本书中的恒定表征概念:恒定表征和变化的恒定表征
  • Ubuntu20.04桥接网络和静态IP配置
  • 网站建设策划书5000字/如何推广网站方法
  • 网站代运营性价比高/网站建设的重要性
  • 外贸建站 台州/企业整站推广
  • 网站的步骤/百度快照手机入口
  • 有网站怎样做推广/河北百度seo
  • 自己做的网站怎么才能被收录/百度免费收录提交入口