ARTS-2018.12.12
- Algorithm
LeetCode 26: Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
描述:使用原地算法返回一个有序数组的不重复元素个数,并将他们按顺序排在前面,举例:
Given nums = [0,0,1,1,1,2,2,3,3,4],返回:5,最终数组前5位为:[0,1,2,3,4]
我的答案:
public int removeDuplicates(int[] nums){
int length = nums.length;
if (length ==0) return length;
int i=0;
int j=1;
while (j <= length - 1) {
if (nums[i] == nums[j]) {
j++;
}else {
nums[i + 1] = nums[j];
i++;
j++;
}
}
return ++i;
}
思路就是2个指针i,j,遇到相同的元素,j往后移动,否则把后面的元素拿到 i+1位,同时 i 向后移动一位。以下是标准答案。
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
- Review
学习了一下OAuth 2.0 的认证流程,这篇文章很不错,流程图很清晰,OAuth 2.0的4种认证流程做了清晰说明和区别,并给了要使用OAuth 2.0 的技术选型参考。贴一下流程图:
- Authorization Code Grant
- Implicit Grant
- Client Credential Grant
- Password Grant
4种验证模式的技术选择要求:
Which to choose ?
- Tip
最近在学习Spring Security
学习到一个非常有用的技巧:
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.debug(true);
}
}
在配置类中打开debug 模式,整个 Spring Security Filter的流程就都会打印出来,非常方便理解整个过程如何进行的,举个例子:
Request received for GET '/login':
org.apache.catalina.connector.RequestFacade@6bd6b5fa
servletPath:/login
pathInfo:null
headers:
host: localhost:8080
connection: keep-alive
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
accept: image/webp,image/apng,image/*,*/*;q=0.8
referer: http://localhost:8080/
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Security filter chain: [
WebAsyncManagerIntegrationFilter
SecurityContextPersistenceFilter
HeaderWriterFilter
LogoutFilter
IpAuthenticationProcessingFilter
UsernamePasswordAuthenticationFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
AnonymousAuthenticationFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
]
************************************************************
- Share
这段时间每天都加班到很晚,除了项目很急之外都是一些很琐碎的事,很多时候是因为开发前没有理清总体的思路,导致在开发的过程中经常因为细节问题推倒重来,我想这也许就是差距吧,努力提高自己的整体思维能力吧,在动手之前多画画流程图,类图,也许更能提高效率。