zoukankan      html  css  js  c++  java
  • 1752. Check if Array Is Sorted and Rotated

    package LeetCode_1752
    
    /**
     * 1752. Check if Array Is Sorted and Rotated
     * https://leetcode.com/problems/check-if-array-is-sorted-and-rotated/
     * Given an array nums, return true if the array was originally sorted in non-decreasing order,
     * then rotated some number of positions (including zero). Otherwise, return false.
    There may be duplicates in the original array.
    Note: An array A rotated by x positions results in an array B of the same length such that A[i] == B[(i+x) % A.length],
    where % is the modulo operation.
    
    Example 1:
    Input: nums = [3,4,5,1,2]
    Output: true
    Explanation: [1,2,3,4,5] is the original sorted array.
    You can rotate the array by x = 3 positions to begin on the the element of value 3: [3,4,5,1,2].
    
    Example 2:
    Input: nums = [2,1,3,4]
    Output: false
    Explanation: There is no sorted array once rotated that can make nums.
    
    Example 3:
    Input: nums = [1,2,3]
    Output: true
    Explanation: [1,2,3] is the original sorted array.
    You can rotate the array by x = 0 positions (i.e. no rotation) to make nums.
    
    Example 4:
    Input: nums = [1,1,1]
    Output: true
    Explanation: [1,1,1] is the original sorted array.
    You can rotate any number of positions to make nums.
    
    Example 5:
    Input: nums = [2,1]
    Output: true
    Explanation: [1,2] is the original sorted array.
    You can rotate the array by x = 5 positions to begin on the element of value 2: [2,1].
    
    Constraints:
    1. 1 <= nums.length <= 100
    2. 1 <= nums[i] <= 100
     * */
    class Solution {
        /*
        * solution 1: follow by rule: A[i] == B[(i+x) % A.length], Time:O(nlogn), Space:O(n)
        * */
        fun check(nums: IntArray): Boolean {
            var x = 0
            val n = nums.size
            for (i in 0 until n - 1) {
                if (nums[i] > nums[i + 1]) {
                    x = i + 1
                }
            }
            val B = nums.clone()
            nums.sort()
            for (i in 0 until n) {
                if (nums[i] != B[(i + x) % n]) {
                    return false
                }
            }
            return true
        }
    }
  • 相关阅读:
    [SCOI2009] Windy数
    [P1361] 小M的作物
    Wannafly Camp 2020 Day 2E 阔力梯的树
    2017百越杯反序列化writeup
    大美西安writeup
    Thinkphp的SQL查询方式
    Thinkphp的CURD
    记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门)
    ThinkPHP的输出和模型使用
    ThinkPHP的运行流程-2
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14384592.html
Copyright © 2011-2022 走看看