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
        }
    }
  • 相关阅读:
    Springboot使用PlatformTransactionManager接口的事务处理
    js 正则替换html标签
    【转】mysql查询时,查询结果按where in数组排序
    js输出字幕数字a-zA-Z0-9
    tcpdump使用教程
    rsync安装使用教程
    vim配置修改教程
    XD刷机报错bad CRC
    使用docker搭建seafile服务器
    案例:使用sqlplus登录报ORA-12547错误
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14384592.html
Copyright © 2011-2022 走看看