力扣刷题:数组OJ篇(下)

大家好,这里是小编的博客频道

小编的博客:就爱学编程
很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!

目录


废话不多说,我们直接看题。

1.轮转数组

(1)题目描述


(2)解题思路

结论:逆置左边,逆置右边,整体逆置就可达到向右轮转的目的。

代码实现:

c 复制代码
void Reserve(int* a, int left, int right){
    while(left < right){
        int tmp = a[left];
        a[left++] = a[right];
        a[right--] = tmp;
    }
}

void rotate(int* nums, int numsSize, int k) {
    if(numsSize == 1) return;
    k %= numsSize;
    Reserve(nums, 0, numsSize - k - 1);
    Reserve(nums, numsSize - k, numsSize - 1);
    Reserve(nums, 0, numsSize - 1);}
  • 那如果是向左轮转呢?

也很简单,向左轮转k步等于向右轮转(numsSize - (k %= numsSize)))步

代码就变为:

c 复制代码
void Reserve(int* a, int left, int right){
    while(left < right){
        int tmp = a[left];
        a[left++] = a[right];
        a[right--] = tmp;
    }
}

void rotate(int* nums, int numsSize, int k) {
    if(numsSize == 1) return;
    k = (numsSize - (k %= numsSize)));
    Reserve(nums, 0, numsSize - k - 1);
    Reserve(nums, numsSize - k, numsSize - 1);
    Reserve(nums, 0, numsSize - 1);}

2.合并两个有序数组

(1)题目描述


(2)解题思路

双指针 + 从后往前

代码实现:

c 复制代码
void merge(int* nums1, int numsSize1, int m, int* nums2, int numsSize2, int n) {
    //想要空间复杂度为常数,只有从后向前依次比较(无论是要升序还是降序)
    int begin1 = m - 1, begin2 = n - 1;
    int tail = m + n - 1;
    while (begin1 >= 0 && begin2 >= 0) {
        if (nums1[begin1] > nums2[begin2]) {
            nums1[tail--] = nums1[begin1--];
        } else {
            nums1[tail--] = nums2[begin2--];
        }
    }
    while (begin2 >= 0) {
        nums1[tail--] = nums2[begin2--];
    }
}

快乐的时光总是短暂,咱们下篇博文再见啦!!!如果小编的文章会对你有帮助的话不要忘了,记得给小编点赞、收藏支持一下,在此非常感谢!!!

相关推荐
墨染点香2 小时前
LeetCode 刷题【144. 二叉树的前序遍历】
数据结构·算法·leetcode
cynicme7 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
ACP广源盛139246256739 小时前
(ACP广源盛)GSV6172---MIPI/LVDS 信号转换为 Type-C/DisplayPort 1.4/HDMI 2.0 并集成嵌入式 MCU
c语言·开发语言·单片机·嵌入式硬件·音视频
im_AMBER10 小时前
算法笔记 09
c语言·数据结构·c++·笔记·学习·算法·排序算法
凯芸呢10 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
寂静山林10 小时前
UVa 1030 Image Is Everything
算法
AI柠檬10 小时前
几种排序算法的实现和性能比较
数据结构·算法·c#·排序算法
weixin_4296302611 小时前
第6章 支持向量机
算法·机器学习·支持向量机
SweetCode11 小时前
C++ 实现大数加法
开发语言·c++·算法
王哈哈^_^11 小时前
【数据集】【YOLO】【目标检测】共享单车数据集,共享单车识别数据集 3596 张,YOLO自行车识别算法实战训推教程。
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计