Non-decreasing Array

昨天第一次參加LeetCode Weekly Contest, 一道題沒(méi)有做出來(lái)。所有時(shí)間都花在第一道題上了,被虐得很慘。 看了一下別人的參考代碼,理解之后發(fā)現(xiàn)真的很簡(jiǎn)單。

  1. Non-decreasing Array

Given an array with n
integers, your task is to check if it could become non-decreasing by modifying at most 1 element.
We define an array is non-decreasing if array[i] <= array[i + 1] holds for every i(1 <= i < n).

Example 1:
Input: [4,2,3] Output: True Explanation: You could modify the first 4 to1 to get a non-decreasing array.
Example 2:
Input: [4,2,1] Output: False Explanation: You can't get a non-decreasing array by modify at most one element.

Note: The n belongs to [1, 10,000].

首先在Array里面找到逆序的元素,也就是nums[i] > nums[i + 1], 用reversOrder來(lái)記錄逆序的個(gè)數(shù)。如果個(gè)數(shù)超過(guò)1,則不可能通過(guò)改一個(gè)元素就變成正序,所以返回false; 如果目前是第一個(gè)逆序,則討論兩種情況:

  • nums[i - 1] <= nums[i + 1],比如[1,6,2,3,4]里6 > 2 并且5 > 2這種情況,要改正的話將6改成1或者2能滿足題意;但如果寫(xiě)6改成2就可以同時(shí)包括i == 0的情況;
  • nums[i - 1] > nums[i + 1], 比如[5,6,2,3,4]里6 > 2并且 5 > 2這種情況,肯定是改2為6才能將此處的逆序改為正序。但這個(gè)例子的情況是改為[5,6,6,3,4]之后仍然有逆序,下次循環(huán)reverseOrder != 0也會(huì)返回false.
class Solution {
    public boolean checkPossibility(int[] nums) {
        int n = nums.length;
        if (n <= 2){
            return true;
        }
        int reverseOrder = 0;
        for (int i = 0; i < n - 1; i++){
            if (nums[i] > nums[i + 1]){
                if (reverseOrder != 0){
                    return false;
                } else {
                    if (i == 0 || nums[i - 1] <= nums[i + 1]){
                        nums[i] = nums[i + 1];
                    } else {
                        nums[i + 1] = nums[i];
                    }
                    reverseOrder++;
                }
            } 
        }
        return true;
        
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,931評(píng)論 0 33
  • 題目 給定一個(gè)整數(shù)數(shù)組,判定是否最多修改一個(gè)位置上的數(shù)字就可以讓這個(gè)數(shù)組變成遞增數(shù)組(包含等號(hào))。 解析 基本思想...
    yxwithu閱讀 376評(píng)論 0 0
  • 這題看似簡(jiǎn)單但是AC百分比很低,因?yàn)檫@題有兩種情形:比如5,8,7,9和5,8,1,9都是i = 2的時(shí)候發(fā)現(xiàn)不滿...
    DrunkPian0閱讀 462評(píng)論 0 0
  • 前幾日無(wú)事,就畫(huà)了一幅好玩的禪繞畫(huà)。今天整理好分享給大家。希望你們能喜歡~? 1.工具 · 鉛筆 · 針管筆 · ...
    xiyue手繪閱讀 3,222評(píng)論 25 50
  • “ 酒入豪腸,七分釀成月光。剩下三分,嘯成劍氣,繡口一吐,就是半個(gè)盛唐。” 因上面這段話,“余光中”這個(gè)名字被我牢...
    喵喵僧閱讀 940評(píng)論 0 9

友情鏈接更多精彩內(nèi)容