简历:The Google Resume: How to Prepare for a Career and Land a Job at Apple, Microsoft, Google, or any Top Tech Company
算法学习书籍:Introduction to Algorithms
编程珠玑:Programming Pearls (2nd Edition)
C++ 学习:The C++ Programming Language, 4th Edition
经典操作系统书籍,龙书:Operating System Concepts
创业:The Start-up of You: Adapt to the Future, Invest in Yourself, and Transform Your Career
Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
What if duplicates are allowed at most twice?
For example,
Given sorted array A =
Given sorted array A =
[1,1,1,2,2,3]
,
Your function should return length =
» Solve this problem5
, and A is now [1,1,2,2,3]
.此题的基本思路还是和remove duplicates from sorted array一样,就是双指针,i and j,i 指向当前已经去掉了duplicate的subarray,j就一直往后搜寻,一直遇到和i指向的不同的,就做A[++i]=A[j].
此题多设了一个counter来看是否是两个了,有一些细节需要注意,但总体不难。看代码可知。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public: | |
int removeDuplicates(int A[], int n) { | |
// Start typing your C/C++ solution below | |
// DO NOT write int main() function | |
if(n<=1) return n; | |
int count=0, i=0; | |
for(int j=1; j<n; j++) | |
{ | |
if(A[i]==A[j]&&count<2) | |
{ | |
count=2; | |
A[++i]=A[j]; | |
} | |
else if(A[i]!=A[j]) | |
{ | |
A[++i]=A[j]; | |
count=0; | |
} | |
else if(count==2&&A[i]==A[j]) | |
continue; | |
} | |
return i+1; | |
} | |
}; |
No comments:
Post a Comment