From 5dbc1f093a2c94867cfae802abcfd9a1860c9107 Mon Sep 17 00:00:00 2001 From: mhrooz Date: Thu, 30 Nov 2023 15:00:08 +0100 Subject: [PATCH] 135 need to use prefix array and suffix array method to solve the probelm --- 135-231130-pass/main.cpp | 90 ++++++++++++++++++++++ {1657-231130 => 1657-231130-pass}/main.cpp | 0 2 files changed, 90 insertions(+) create mode 100644 135-231130-pass/main.cpp rename {1657-231130 => 1657-231130-pass}/main.cpp (100%) diff --git a/135-231130-pass/main.cpp b/135-231130-pass/main.cpp new file mode 100644 index 0000000..64519a5 --- /dev/null +++ b/135-231130-pass/main.cpp @@ -0,0 +1,90 @@ +#include +using namespace std; + +class Solution{ +public: + int candy(vector& ratings){ + const int length = ratings.size(); + const int size = 2e4+10; + vectorpref(length, 1); + vectorsuff(length, 1); + for(int i = 1 ; i < length ;i++){ + if(ratings[i] > ratings[i-1]) + pref[i] = pref[i-1] + 1; + } + for(int i = length - 2 ; i >= 0 ; i--){ + if(ratings[i] > ratings[i+1]) + suff[i] = suff[i+1] + 1; + } + int sum = 0; + for(int i = 0 ; i < length ;i++) + sum+=max(pref[i],suff[i]); + return sum; + } + int candy1(vector& ratings){ + const int length = ratings.size(); + const int size = 2e4+10; + int comparision[size] = {}; + if(ratings[1] > ratings[0]) + comparision[0] = 1; + else if (ratings[1] == ratings[0]) + comparision[0] = 0; + else + comparision[0] = -1; + int rlt[size] = {}; + for(int i = 1 ; i < length ; i++){ + if(ratings[i] < ratings[i-1]){ + comparision[i] = -1; + if(rlt[i-1] == 0) { + rlt[i] = 2; + // rlt[i-1] = 1; + } + else rlt[i] = rlt[i-1] + 1; + } + else if(ratings[i] == ratings[i - 1]){ + comparision[i] = 0; + } + else{ + comparision[i] = 1; + } + } + for(int i = 1 ; i < length ; i++){ + if(rlt[i] == 0){ + if(comparision[i] == 0) + rlt[i] = 1; + else { + // if(comparision[i-1] == -1) + // rlt[i] = 2; + // else + // rlt[i] = rlt[i-1] + 1; + if(comparision[i-1] == 1 && rlt[i-1] == 0) + rlt[i] = 2; + else if(comparision[i-1] == 1 && rlt[i-1]) + rlt[i] = rlt[i-1] + 1; + } + } + } + for(int i = 0 ; i ex1 = {1,0,2}; + cout< ex2 = {1,2,2}; + cout< ex3 = {4,1,4,3,2,1,5,8,7,5,2}; + cout< ex4 = {1,3,4,5,2}; + cout<