• Leetcode1752:检查数组是否经排序和轮转得到


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


    题目

            给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。

            如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。

            源数组中可能存在重复项 。

            注意:我们称数组 A 在轮转 x 个位置后得到长度相同的数组 B ,当它们满足 A[i] == B[(i+x) % A.length] ,其中 % 为取余运算

    示例 1:

    输入:nums = [3,4,5,1,2]
    输出:true
    解释:[1,2,3,4,5] 为有序的源数组。
    可以轮转 x = 3 个位置,使新数组从值为 3 的元素开始:[3,4,5,1,2] 。

    示例 2:

    输入:nums = [2,1,3,4]
    输出:false
    解释:源数组无法经轮转得到 nums 。

    示例 3:

    输入:nums = [1,2,3]
    输出:true
    解释:[1,2,3] 为有序的源数组。
    可以轮转 x = 0 个位置(即不轮转)得到 nums 。

    提示:

    1 <= nums.length <= 100
    1 <= nums[i] <= 100

    题解

    方法一

    解题思路
    把数组看做一个环,取余可以使他们连接起来

    1. class Solution {
    2.     public boolean check(int[] nums) {
    3.         int count=0;
    4.         for(int i=0;i
    5.             if(nums[i]>nums[(i+1)%nums.length]){
    6.                 count++;
    7.             }
    8.         }
    9.         return count<=1;
    10.     }
    11. }

    时间:0ms      空间:39.4MB

    方法二

    解题思路
    数组排序后符合条件,则他排序后一定包含在两个原数组拼接后的数组中

    1. class Solution {
    2.     public boolean check(int[] nums) {
    3.         StringBuffer str= new StringBuffer();
    4.         StringBuffer s= new StringBuffer();
    5.         for(int i : nums){
    6.             //因为i<=100,所以会有11,21等数
    7.             //加空格解决该类数全部拼接成一个数的情况
    8.             str.append(i).append(" ");
    9.         }
    10.         str.append(str);//拼接str
    11.         //对nums排序,将他转变为stringbuffer
    12.         Arrays.sort(nums);
    13.         for(int i : nums){
    14.             s.append(i).append(" ");
    15.         }
    16.         //判断是否包含子字符串
    17.         return str.toString().contains(s.toString()
    18. );        
    19.     }
    20. }

    时间:2ms         空间:39.3MB

  • 相关阅读:
    读书笔记:多Transformer的双向编码器表示法(Bert)-2
    《FFmpeg Basics》中文版-02-显示帮助和功能
    CRM系统开发
    超好用的数据库检索工具介绍——Bean Searcher
    【2022】小米秋招前端笔试(卷1+卷2单选题)
    米哈游(原神)一面算法原题
    传智杯初赛A~D题解
    Boost之Log: (2)、代码练习
    探索 GO 项目依赖包管理与Go Module常规操作
    Java多线程【状态与安全问题】
  • 原文地址:https://blog.csdn.net/qq_52726736/article/details/128209473