zoukankan      html  css  js  c++  java
  • LeetCode 1243 数组变换

    地址 https://leetcode-cn.com/contest/biweekly-contest-12/problems/array-transformation/

    首先,给你一个初始数组 arr。然后,每天你都要根据前一天的数组生成一个新的数组。

    第 i 天所生成的数组,是由你对第 i-1 天的数组进行如下操作所得的:

    假如一个元素小于它的左右邻居,那么该元素自增 1。
    假如一个元素大于它的左右邻居,那么该元素自减 1。
    首、尾元素 永不 改变。
    过些时日,你会发现数组将会不再发生变化,请返回最终所得到的数组。

    1:
    
    输入:[6,2,3,4]
    输出:[6,3,3,4]
    解释:
    第一天,数组从 [6,2,3,4] 变为 [6,3,3,4]。
    无法再对该数组进行更多操作。
    示例 2:
    
    输入:[1,6,3,4,3,5]
    输出:[1,4,4,4,4,5]
    解释:
    第一天,数组从 [1,6,3,4,3,5] 变为 [1,5,4,3,4,5]。
    第二天,数组从 [1,5,4,3,4,5] 变为 [1,4,4,4,4,5]。
    无法再对该数组进行更多操作。

    算法1
    这道题 只是勉强做出来 优化的位置还有很多
    完全的模拟题意
    每次循环开了一个数组 和询问数组一样的长的数组 依次检测每个元素 如果符合题意就在新开的数组里记录+1或者-1
    最后把新开数组加进原数组
    如果新开数组全部为零 那么就是没有变化 就 可以跳出循环

     1 class Solution {
     2 public:
     3     vector<int> transformArray(vector<int>& arr) {
     4         if(arr.size() == 1 || arr.size() == 2) return arr;
     5 
     6         while(1){
     7             vector<int> addvec(arr.size(),0);
     8             for(int i = 1;i < arr.size()-1;i++){
     9                 if(arr[i] > arr[i-1] && arr[i]>arr[i+1]) addvec[i] = -1;
    10                 else if(arr[i] < arr[i-1] && arr[i]<arr[i+1]) addvec[i] = 1;
    11             }
    12             int isAllZero = true;
    13             for(int i = 0; i < addvec.size();i++){
    14                 arr[i] += addvec[i];
    15                 if(addvec[i] != 0) isAllZero =false;
    16             } 
    17             if(isAllZero) break;
    18         }
    19 
    20 
    21         return arr;
    22     }
    23 };
    View Code
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    前端性能优化总结
    Vue style 深度作用选择器 >>> 与 /deep/(sass/less)
    NPM依赖包版本号~和^的区别及最佳实践
    umi部分使用总结
    FIS 插件机制
    从0到1发布一个npm包
    页面性能监控之performance
    1和new Number(1)有什么区别
    实现一个hoverDelay延迟hover
    触发浏览器回流的属性方法一览表
  • 原文地址:https://www.cnblogs.com/itdef/p/11785895.html
Copyright © 2011-2022 走看看