zoukankan      html  css  js  c++  java
  • 735. 替换为右侧最大值

    给一整数数组, 用当前元素之后数组中的最大元素来替换当前元素(右侧的最大元素). 因为最后一个元素的右边没有元素了, 所以用 -1 来替换这个值. 举个例子, 如果数组为 [16,17,4,3,5,2], 那么它就需要修改为 [17,5,5,5,2,-1].

    样例

    给出数组 nums = [16,17,4,3,5,2], 改变数组为 [17,5,5,5,2,-1], 你需要在原地实现。

    没有什么骚操作,就是很普通的找当前右边最大值然后替换,第一次交就过了

     1 void arrayReplaceWithGreatestFromRight(vector<int> &nums) {
     2         // Write your code here.
     3         int i=0, j;
     4         int max_index;
     5         while(i<nums.size()){
     6             j=i+1;
     7             max_index=i;
     8             while(j<nums.size()){//找当前右边最大值
     9                 if(nums[j]>nums[max_index]){
    10                     max_index=j;
    11                 }
    12                 j++;
    13             }
    14             while(i<max_index){//找到后存到max_index,然后替换
    15                 nums[i]=nums[max_index];
    16                 i++;
    17             }
    18             nums[i]=INT_MIN;
    19             if(max_index==nums.size()-1){
    20                 nums[max_index]=-1;
    21                 break;
    22             }
    23         }
    24     }

     然后看了一眼别人的答案,发现我这个真的是老实人的顺序做法

    聪明的直接逆序,max初始化为最后,逆着覆盖过去,如果有比max大的,update max。

    这样效率高得多,我这个解法还多一个找局部最大的过程。

  • 相关阅读:
    雷林鹏分享:CSS 链接
    雷林鹏分享:CSS 字体
    雷林鹏分享:CSS 文本格式
    转载:64,32位编程问题
    NSTimer 线程操作
    安装推送
    短信在没有网络情况下崩溃
    使用Html来避免写复杂的app代码,跨平台
    ios推送
    APN 推送
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/8444059.html
Copyright © 2011-2022 走看看