Leetcode每日一题 —— 1752. 检查数组是否经排序和轮转得到

力扣 LeetCode 1752. 检查数组是否经排序和轮转得到 - 力扣(LeetCode) 1752. 检查数组是否经排序和轮转得到 - 给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置(包括 0 个位置)...
Leetcode每日一题 —— 1752. 检查数组是否经排序和轮转得到
Leetcode每日一题 —— 1752. 检查数组是否经排序和轮转得到
力扣 LeetCode

1752. 检查数组是否经排序和轮转得到 - 力扣(LeetCode)

1752. 检查数组是否经排序和轮转得到 - 给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。 源数组中可能存在 重复项 。 注意:数组 A 在轮转 x 个位置后得到长度相同的数组 B ,使得对于每一个有效的下标 i,满足 B[i] == A[(i+x) % A.length]。   示例 1: 输入:nums =...

思路
遍历一遍

  1. 如果出现了一次以上降序,说明无法通过旋转得到
  2. 如果出现了一次降序,并且第一个值小于最后一个值,说明无法通过旋转得到
  3. 其他情况可以通过旋转得到。

代码

class Solution {
    public boolean check(int[] nums) {
        boolean ex = false;
        int last = Integer.MIN_VALUE;
        for (int num : nums) {
            if (num < last) {
                if (ex) {
                    return false;
                }
                ex = true;
            }
            last = num;
        }
        return !ex || last <= nums[0];
    }
}

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文