Posts

719. Calculate Maximum Value

int calcMaxValue ( string &str) { // write your code here const int size = str.size(); if (size == 0 ){ return 0 ; } int a = str[ 0 ] - '0' ; for ( int i = 1 ; i < size; i++){ int num = str[i] - '0' ; int temp = a + num; int temp1 = a * num; a = max(temp1, temp); } return a; }

720. Rearrange a String With Integers

string rearrange ( string &str) { // Write your code here std :: vector < int > flag( 26 , 0 ); const int size = str.size(); if (size == 0 ){ return str; } int sum = 0 ; for ( int i = 0 ; i < size; i++){ if (str[i] >= 'A' && str[i] <= 'Z' ){ flag[str[i] - 'A' ]++; } else { sum += (str[i] - '0' ); } } string res = "" ; for ( int i = 0 ; i < 26 ; i++){ while (flag[i] > 0 ){ res += ( 'A' +i); flag[i]--; } } res += to_string(sum); return res; }

945. Task Scheduler

int leastInterval ( string &tasks, int n) { // write your code here unordered_map < char , int > mp; int maxL = 0 ; for ( auto i : tasks){ mp[i]++; maxL = max(maxL, mp[i]); } int res = (maxL - 1 ) * (n + 1 ); for ( auto i : mp){ if (i.second == maxL){ res++; } } return max(res, ( int )tasks.size()); }

420. Count and Say

string countAndSay ( int n) { // write your code here string res = "1" ; int cnt = 0 ; char start; for ( int i = 2 ; i <= n; i++){ string temp = "" ; int j = 0 ; while (j < res.size()){ cnt = 1 ; start = res[j]; while (j < res.size() - 1 && res[j] == res[j + 1 ]){ cnt++; j++; } temp += (to_string(cnt) + (start)); ++j; } //temp += (to_string(cnt) + to_string(start)); res = temp; } return res; }

406. Minimum Size Subarray Sum

int minimumSize ( vector < int > &nums, int s) { // write your code here int sum = 0 ; int res = INT_MAX; for ( int left = 0 , right = 0 ; right < nums.size(); right++){ sum += nums[right]; while (sum >= s){ res = min(res, right - left + 1 ); sum -= nums[left++]; } } return res == INT_MAX ? -1 : res; }

1260. Rotate Function

居然是DP int maxRotateFunction ( vector < int > &A) { // Write your code here const int size = A.size(); vector < int > dp(size, 0 ); int sum = 0 ; for ( int i = 0 ; i < size; i++){ sum += A[i]; dp[ 0 ] += i * A[i]; } int res = dp[ 0 ]; for ( int i = 1 ; i < size; i++){ dp[i] = dp[i - 1 ] - (sum - size * A[i - 1 ]); res = max(res, dp[i]); } return res; }

927. Reverse Words in a String II

class Solution { public : /** * @param str: a string * @return: return a string */ string reverseWords ( string &str) { // write your code here const int size = str.size(); for ( int i = 0 ; i < size/ 2 ; i++){ char temp = str[i]; str[i] = str[size - 1 - i]; str[size - 1 - i] = temp; } int left = 0 , right = 0 ; while (right < size){ while (right < size && str[right] != ' ' ){ ++right; } if (right < size){ for ( int i = 0 ; i < (right - left) / 2 ; i++){ char temp = str[left + i]; str[left + i] = str[right - 1 - i]; str[right - 1 - i] = temp; } ++right; left = right; } } for ( int i = 0 ; i < (size - left) / 2 ; i+...