• 力扣每日一题:1752. 检查数组是否经排序和轮转得到


    给你一个数组 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

    分析:题目意思就是把原数组分为左右两部分,然后进行交换变成nums,。这样子的话,nums数组里面就只有一个元素比它前面的一个元素更小,然后我们用一个变量来记录num这个数。如果num=0.nums就是为有序数组,如果num>1 返回false,如果num=1 ,我们在比较一下nums【0】是否大于等于nums【n-1】如果大于等于返回true,小于返回false

    AC代码:

    1. class Solution {
    2. public boolean check(int[] nums) {
    3. int n = nums.length;
    4. int flag =0 ;
    5. int num = 0 ;
    6. for(int i =1 ;i
    7. if(nums[i]1]){
    8. num++;
    9. if(num>1){
    10. return false ;
    11. }
    12. }
    13. }
    14. if(num==0){
    15. return true ;
    16. }
    17. if(nums[0]< nums[n-1])
    18. return false;
    19. return true ;
    20. }
    21. }

  • 相关阅读:
    【译】Google开源Magika:基于人工智能的文件识别工具
    git 的行结束符
    音视频八股文(11)-- ffmpeg avio 内存输入和内存输出。内存输出有完整代码,网上很少有的。
    thinkphp5.1 单元测试phpunit使用和常见问题
    初识canvas
    [每周一更]-(第62期):SRE 是什么?
    阿里技术面总结
    QT day4
    底软驱动 | 大厂面试爱考的C++内存相关
    【电商项目第三问】
  • 原文地址:https://blog.csdn.net/weixin_54046648/article/details/128062291