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
        }
    }
  • 相关阅读:
    【解题报告】 [YNOI2019]排队
    【解题报告】[AHOI2001]彩票摇奖
    【解题报告】 [NOIP2006]能量项链
    【解题报告】 启示录
    【解题报告】 【NOIP2018】 摆渡车
    【解题报告】 【NOIP2017】 奶酪
    C# winform 窗体从右下角向上弹出窗口效果
    C#开发COM+组件和ActiveX控件
    JQuery
    How to delete a team project from Team Foundation Service (tfs.visualstudio.com)
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14384592.html
Copyright © 2011-2022 走看看