鱼C论坛

 找回密码
 立即注册
查看: 962|回复: 0

[技术交流] C++打开LeetCode的大门——1144(数组)

[复制链接]
发表于 2020-5-26 20:52:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 这是她 于 2020-5-26 20:51 编辑

                                                                                递减元素使数组呈锯齿状
题目:
给你一个整数数组 nums,每次操作会从中选择一个元素并将该元素的值减少 1。
如果符合下列情况之一,则数组 A 就是 锯齿数组:

* 每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > ...
* 或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < ...

返回将数组 nums 转换为锯齿数组所需的最小操作次数。

示例1:
  1. 输入:nums = [1,2,3]
  2. 输出:2
  3. 解释:我们可以把 2 递减到 0,或把 3 递减到 1。
复制代码

示例2:
  1. 输入:nums = [9,6,1,6,2]
  2. 输出:4
复制代码

提示:
  1. 1 <= nums.length <= 1000
  2. 1 <= nums[i] <= 1000
复制代码

代码:
  1. #include <iostream>
  2. #include <vector>

  3. #define INT_MAX 2147483647
  4. #define INT_MIN (-INT_MAX - 1)

  5. using namespace std;

  6. class Solution {
  7. public:
  8.     int movesToMakeZigzag(vector<int>& nums) {
  9.             //先判断数组的个数---如果小于2就直接返回0
  10.         if (nums.size() < 2) return 0;
  11.         //s1  s2 ->记录奇偶的的次数
  12.         int s1 = 0;
  13.         int s2 = 0;
  14.         //N->数组大小
  15.         int N = nums.size();
  16.         
  17.         for (int i = 0; i < N; ++i) {
  18.                 //l->i-1
  19.                 //s->i+1
  20.             int l = (i > 0) ? nums[i - 1] : INT_MAX;
  21.             int r = (i < N - 1) ? nums[i + 1] : INT_MAX;
  22.             //i&1
  23.             //1---i->奇数
  24.             //0---i->偶数
  25.             if (i & 1) {
  26.                 s1 += max(0, nums[i] - min(l, r) + 1);
  27.             } else {
  28.                 s2 += max(0, nums[i] - min(l, r) + 1);
  29.             }
  30.         }
  31.         return min(s1, s2);
  32.     }
  33. };

  34. int main()
  35. {
  36.         int p[] = {6,4,7,5};
  37.         vector<int> nums1 = {p, p+sizeof(p) / sizeof(p)};

  38.         Solution s1;
  39.         int a = s1.movesToMakeZigzag(nums1);
  40.         
  41.         cout << a << endl;
  42.         
  43.         return 0;
  44. }
复制代码

https://leetcode-cn.com/problems ... e-by-da-li-wang-15/



来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems ... o-make-array-zigzag
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-9 04:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表