leetcode題,leetcode 題解 java_leetcode-java題解(每天更新)

 2023-10-06 阅读 31 评论 0

摘要:先給出一個leetcode的已有答案,為什么上來直接給出答案,因為這個好多答案寫的都非常簡潔,不太易懂,還是建議先自己做,答案只是參考http://www.ninechapter.com/solutions/。1,https://leetcode.com/problems/two-sum/,題目大

先給出一個leetcode的已有答案,為什么上來直接給出答案,因為這個好多答案寫的都非常簡潔,不太易懂,還是建議先自己做,答案只是參考http://www.ninechapter.com/solutions/。

1,https://leetcode.com/problems/two-sum/,題目大意是給出一個無序的數組和一個目標值,假設數組里有且只有兩個數相加和目標值相等,按索引由小到大輸出這兩個數字的索引,從1開始索引。

思路:既然題目假設有兩個數a,b肯定相加得到目標值c,那么肯定有c-a存在于數組中,于是問題轉化成了如何高效檢查一個數組中是否包含某個值,在這里找到一些答案http://www.diguage.com/archives/112.html。于是采用先排序,然后用Arrays.binarySearch的方法,然后根據OJ提示的一些錯誤,修改幾下就好了。具體代碼如下,254ms,和九章以及其他解題答案不太一樣。

import?java.util.Arrays;

public?class?Solution1?{

leetcode題、public?static?int[]?twoSum(int[]?numbers,?int?target)

{

int[]?num?=?numbers.clone();

Arrays.sort(num);

int?size?=?num.length;

int[]?answers?=?new?int[2];

leetcode java?for(int?i=0;i

{

if(Arrays.binarySearch(num,?target-num[i])>0)

{

int?count=0,index1?=?0,index2=0;

for(int?j=0;j

leetcode第一題、{

if(numbers[j]==num[i]||numbers[j]==target-num[i])

{

count++;

if(count==2)

{

leetcode第三題?index2=j;

answers[0]?=?(index1

answers[1]?=?(index1>index2?index1:index2)+1;

break;

}

else

有效的java?{

index1=j;

}

}

}

}

leetcode第二題、}

return?answers;

}

public?static?void?main(String[]?args)

{

int[]?test?=?{-3,4,3,90};

leetcode4題、int?target?=?0;

int[]?result?=?{0,0};

result?=?twoSum(test,target);

System.out.println(result[0]+","+result[1]);

}

}

java、我先用第一種容易理解的方式AC,答案比較簡單:

//solution1:先歸并合并,再求中位數

public?static?double?findMedianSortedArrays(int?A[],?int?B[])?{

int[]?C=?mergeSortSub(A,?B);

double?result=0;

int?n=C.length;

leetcode題難嗎、if(n%2==0)

{

double?m1=0.5*n-1;

double?m2=0.5*n;

result?=?0.5*(C[(int)?m1]+C[(int)?m2]);

}else?{

leetcode能用java刷嗎、result?=?C[(int)?Math.round(0.5*n-1)];

}

return?result;

}

private?static?int[]?mergeSortSub(int[]?arr1,int[]?arr2){//歸并排序子程序

if(arr1.length==0)

leetcode題庫c++、{

return?arr2;

}

if(arr2.length==0)

{

return?arr1;

leetcode第一題都過不了,}

int[]?result?=?new?int[arr1.length+arr2.length];

int?i?=?0;

int?j?=?0;

int?k?=?0;

while(true){

java leetcode、if(arr1[i]?

result[k]?=?arr1[i];

if(++i>arr1.length-1){

break;

}

}else{

leetcode題目及答案、result[k]?=?arr2[j];

if(++j>arr2.length-1){

break;

}

}

k++;

leetcode航班調整java,}

for(;i

result[++k]?=?arr1[i];

}

for(;j

result[++k]?=?arr2[j];

}

return?result;

}

public?static?void?main(String[]?args)?{

int?A[]={1,2,3,4};

int?B[]={5,6,7,8};

double?result?=?findMedianSortedArrays(A,B);

System.out.println(result);

}

答案2就是參考的九章里面的解法,讀懂然后過一段時間默寫。

這個比較簡單,想清楚關鍵一點就是判斷出重復后,從重復字符的下一索引繼續開始,不要遺漏。

代碼如下:

public?class?Solution3?{

public?static?int?lengthOfLongestSubstring(String?s)?{

int?len?=?s.length();

if(len==0)

{

return?0;

}

String?string?=?null;

String?subString?=?null;

int?maxLength?=?0;

for(int?i=0;i

{

subString?=?String.valueOf(s.charAt(i));

if(i==0)

{

string?=?subString;

subString?=?null;

}else

{

if(!string.contains(subString))

{

subString?=?string+subString;

string?=?subString;

if(string.length()>maxLength)

{

maxLength?=?string.length();

}

subString?=?null;

}else

{

int?index?=?string.indexOf(subString);

subString?=?string.substring(index+1)+subString;

string?=?subString;

if(string.length()>maxLength)

{

maxLength?=?string.length();

}

subString?=?null;

}

}

}

return?maxLength;

}

public?static?void?main(String[]?args)?{

String?string?=?"dvdf";

int?result?=?lengthOfLongestSubstring(string);

System.out.println(result);

}

}

4,等待更新

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/122381.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息