版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第C++實現(xiàn)LeetCode數(shù)組練習(xí)題目錄1、存在重復(fù)元素2、最大子序和3、兩數(shù)之和4、合并兩個有序數(shù)組5、兩個數(shù)組的交集II6、買賣股票的最佳時機7、楊輝三角8、重塑矩陣9、有效的數(shù)獨10、矩陣置零總結(jié)
1、存在重復(fù)元素
排序數(shù)組,之后遍歷是否有重復(fù)的元素
publicbooleancontainsDuplicate(int[]nums){
Arrays.sort(nums);
for(inti=1;inums.length;i++){
if(nums[i-1]==nums[i]){
returntrue;
returnfalse;
不排序,利用set去重,判斷長度
publicbooleancontainsDuplicate(int[]nums){
HashSetIntegerset=newHashSet();
for(inti=0;inums.length;i++){
set.add(nums[i]);
if(set.size()==nums.length){
returnfalse;
returntrue;
2、最大子序和
這道題最經(jīng)典的思路就是動態(tài)規(guī)劃,取當(dāng)前數(shù)組值和當(dāng)前數(shù)組值加上前一個數(shù)組值中取最大值
publicintmaxSubArray(int[]nums){
intres=nums[0];
for(inti=1;inums.length;i++){
nums[i]=Math.max(nums[i]+nums[i-1],nums[i]);
res=Math.max(nums[i],res);
returnres;
還有一種就是記錄前i項子序列和小于0就重新賦值為下一個
publicintmaxSubArray(int[]nums){
intcount=nums[0];
intres=nums[0];
for(inti=1;inums.length;i++){
if(count=0){
count=nums[i];
}else{
count+=nums[i];
res=Math.max(res,count);
returnres;
3、兩數(shù)之和
利用map,來存儲數(shù)組值和當(dāng)前位置,來判斷
publicint[]twoSum(int[]nums,inttarget){
HashMapInteger,Integermap=newHashMap();
for(inti=0;inums.length;i++){
map.put(nums[i],i);
for(inti=0;inums.length;i++){
intnum=target-nums[i];
if(map.containsKey(num)i!=map.get(num)){
returnnewint[]{i,map.get(num)};
returnnull;
4、合并兩個有序數(shù)組
定義變量,遍歷比較
publicvoidmerge(int[]nums1,intm,int[]nums2,intn){
inti=m-1;
intj=n-1;
intk=m+n-1;
while(i=0j=0){
if(nums1[i]nums2[j]){
nums1[k--]=nums1[i--];
}else{
nums1[k--]=nums2[j--];
while(j=0){//即nums2元素還沒放完
nums1[k--]=nums2[j--];
5、兩個數(shù)組的交集II
1.排序,定義指針來判斷
publicint[]intersect(int[]nums1,int[]nums2){
Arrays.sort(nums1);
Arrays.sort(nums2);
intleft=0;
intright=0;
ListIntegerlist=newArrayList();
while(leftnums1.lengthrightnums2.length){
if(nums1[left]==nums2[right]){
list.add(nums1[left]);
left++;
right++;
}elseif(nums1[left]nums2[right]){
left++;
}else{
right++;
int[]arr=newint[list.size()];
for(inti=0;ilist.size();i++){
arr[i]=list.get(i);
returnarr;
6、買賣股票的最佳時機
股票問題就是保存數(shù)組中最小值,之后用當(dāng)前數(shù)組值減去最小值保留最大的,如果max是負(fù)數(shù),就返回0
publicintmaxProfit(int[]prices){
intmax=Integer.MIN_VALUE;
intmin=prices[0];
for(inti=1;iprices.length;i++){
max=Math.max(max,prices[i]-min);
min=Math.min(prices[i],min);
if(max0){
return0;
returnmax;
7、楊輝三角
判斷特殊情況,第一列和i=j列都是1,其他的都上面的值加上面左邊的值,定義二維數(shù)組進行幫助
publicListListIntegergenerate(intnumRows){
ListListIntegerlist=newArrayList();
int[][]array=newint[numRows][numRows];
for(inti=0;inumRows;i++){
ListIntegerres=newArrayList();
for(intj=0;jj++){
if(j==0||i==j){
array[i][j]=1;
}else{
array[i][j]=array[i-1][j-1]+array[i-1][j];
res.add(array[i][j]);
list.add(res);
returnlist;
8、重塑矩陣
找到其規(guī)律進行賦值即可
publicint[][]matrixReshape(int[][]mat,intr,intc){
intn=mat.length;//行數(shù)
intm=mat[0].length;//列數(shù)
if(m*n!=r*c){
returnmat;
int[][]arr=newint[r][c];
for(inti=0;ii++){
arr[i/c][i%c]=mat[i/m][i%m];
returnarr;
9、有效的數(shù)獨
定義二維數(shù)組來判斷,將存在的數(shù)字置為true,判斷是否該位置為true,返回false.
publicbooleanisValidSudoku(char[][]board){
boolean[][]row=newboolean[9][9];//行數(shù)
boolean[][]col=newboolean[9][9];//列數(shù)
boolean[][]box=newboolean[9][9];//格子內(nèi)
for(inti=0;ii++){
for(intj=0;jj++){
charch=board[i][j];
if(ch=='.')continue;
intcurIndex=ch-'1';//計算在哪個位置
intboxIndex=i/3*3+j/3;//計算在哪個格子里面
if(row[i][curIndex]||col[j][curIndex]||box[boxIndex][curIndex])returnfalse;
row[i][curIndex]=true;
col[j][curIndex]=true;
box[boxIndex][curIndex]=true;
returntrue;
10、矩陣置零
先檢查第一行和第一列是否有0,定義boolean變量標(biāo)記
再利用第一行和第一列作為標(biāo)記列,遍歷整個數(shù)組,將中間元素為0的第一行和第一列置為0,
之后遍歷整個數(shù)組將第一行和第一列的為0的元素的中間元素置為0,之后判斷第一行和第一列是否含0,改為0即可
classSolution{
publicvoidsetZeroes(int[][]matrix){
booleanrow=false;//標(biāo)記第一行
booleancol=false;//標(biāo)記第一列
intm=matrix.length;//行數(shù)
intn=matrix[0].length;//列數(shù)
//檢查第一行是否有0標(biāo)記
for(inti=0;ii++){
if(matrix[0][i]==0){
row=true;
break;
//檢查第一列是否有0標(biāo)記
for(inti=0;ii++){
if(matrix[i][0]==0){
col=true;
break;
//遍歷中間元素把第一行和第一列置為0
for(inti=1;ii++){
for(intj=1;jj++){
if(matrix[i][j]==0){
matrix[i][0]=0;
matrix[0][j]=0;
//根據(jù)第一行第一列的結(jié)果把中間元素置為0
for(inti=1;ii++){
for(intj=1;jj++){
if(matrix[i][0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣東云浮市中醫(yī)院招聘15人備考題庫及完整答案詳解
- 2026新疆圖木舒克新綸化纖有限責(zé)任公司市場化選聘2人備考題庫完整參考答案詳解
- 2026年心理學(xué)基礎(chǔ)知識心理健康考試題庫
- 2026年北華大學(xué)公開招聘博士人才備考題庫(1號)(212人)(含答案詳解)
- 2026廣東佛山獅山鎮(zhèn)小塘第四幼兒園招聘2人備考題庫及答案詳解(易錯題)
- 2026山東新瑯琊投資發(fā)展集團有限公司招聘6人備考題庫及完整答案詳解1套
- 2026上海中遠(yuǎn)海運全球物流基礎(chǔ)設(shè)施投資建設(shè)運營人才招聘16人備考題庫及答案詳解(新)
- 2026年河北大學(xué)公開選聘工作人員133名考試參考試題及答案解析
- 【上半年聯(lián)考】三亞市教育局下屬事業(yè)單位招聘4人備考考試題庫及答案解析
- 2026江蘇南京溧水高新產(chǎn)業(yè)股權(quán)投資有限公司社會招聘8人備考題庫及1套完整答案詳解
- 科室護理人才梯隊建設(shè)
- 跨境藥物輸送監(jiān)管難題-洞察及研究
- 《食品微生物學(xué)》課程標(biāo)準(zhǔn)
- 肥胖患者麻醉管理課件
- 多傳感器融合技術(shù)在火災(zāi)檢測仿真系統(tǒng)中的應(yīng)用研究
- 公司退貨流程管理制度
- 術(shù)后鎮(zhèn)痛的護理課件
- 《建筑施工常見問題》課件
- 交易賬戶托管協(xié)議書
- 正步走教學(xué)課件
- 商砼站合伙投資協(xié)議書6篇
評論
0/150
提交評論