
LeetCode 每日一题笔记0. 前言日期2026.05.23题目1752. 检查数组是否经排序和轮转得到难度简单标签数组1. 题目理解问题描述给你一个数组nums。其源数组是按非递减顺序排列的nums本身。判断nums是否可以由源数组经过若干次轮转包括0次得到。示例输入nums [3,4,5,1,2]输出true解释由有序数组[1,2,3,4,5]轮转2次得到。输入nums [2,1,3,4]输出false解释无法由有序数组轮转得到。2. 解题思路核心观察有序数组轮转后数组中下降的次数即nums[i] nums[i1]的情况最多出现一次包括首尾元素的比较即nums[n-1]和nums[0]总共下降次数 ≤ 1 时即为合法的轮转数组。算法步骤遍历数组统计相邻元素包括首尾中nums[i] nums[(i1)%n]的次数若次数 ≤ 1则返回true否则返回false。3. 代码实现classSolution{publicbooleancheck(int[]nums){intcount0;intnnums.length;for(inti0;in;i){if(nums[i]nums[(i1)%n]){count;}}returncount1;}}4. 代码优化说明减少分支判断直接在循环中完成计数和提前终止逻辑更紧凑classSolution{publicbooleancheck(int[]nums){intcount0;intnnums.length;for(inti0;in;i){if(nums[i]nums[(i1)%n]count1){returnfalse;}}returntrue;}}5. 复杂度分析时间复杂度O(n)O(n)O(n)遍历一次数组即可完成统计。空间复杂度O(1)O(1)O(1)仅使用常数级额外变量。6. 总结核心思路统计下降次数利用有序数组轮转的特性下降次数不超过1次即为合法优化后代码通过提前终止减少不必要的遍历同时保持逻辑简洁本题关键是理解有序数组轮转后的局部有序性以及下降次数的判定条件。