不包含本位置值的累乘陣列
陣列的partition調整
最短通路值
陣列中未出現的最小正整數
陣列排序之後相鄰數的最大差值
給定乙個n×n的矩陣matrix,在這個矩陣中,只有0和1兩種值,返回最大正方形的邊長長度。
如:0 1 1 1 1
0 1 0 0 1
0 1 0 0 1
0 1 1 1 1
0 1 0 1 1
其中邊框全是1的最大正方形大小為4×4,返回4
逐個位置判斷複雜度可以達到o(n4),經過更改後的複雜度可以達到o(n3)
#include
#include
#include
using
namespace std;
void
setbordermap
(vectorint>>
&m, vectorint>>
&right, vectorint>>
&down)
for(
int i = row -
2; i >=
0; i--)}
for(
int i = col -
2; i >=
0; i--)}
for(
int i = row -
2; i >=
0; i--)}
}}bool
hassizeofborder
(int size, vectorint>> right, vectorint>> down)
}return
false;}
intgetmaxsize
(vectorint>> m)
return0;
}int
main()
int res =
getmaxsize
(in)
; cout << res << endl;
getchar()
;return0;
}
給定乙個整形陣列arr,返回不包含本位置值得雷乘陣列
如:arr=[2, 3, 1, 4],返回[12, 8, 24, 6],即除自己外,其他所有位置上的乘積。
要求時間複雜度o(n);額外空間複雜度為o(1);
兩種方法,一種是得到全部乘積後進行除法,不允許除法的情況下,可以參考第二種方法。
#include
#include
using
namespace std;
int*
multi1
(int
* arr,
int len)
int* res =
newint
[len]
;for
(int i =
0; i < len; i++
) res[i]=0
;if(cnt ==0)
if(cnt ==1)
}return res;
}int
*multi2
(int
* arr,
int len)
return res;
}void
print
(int
* arr,
int len)
intmain()
給定要給有序陣列,調整arr使得這個陣列的左半部分沒有重複元素且公升序,不用保證右半部份是否有序。
補充題目:給定乙個陣列arr,其中只可能含有0, 1, 2三個值,請實現arr的排序。
要求:時間複雜度o(n),額外空間複雜度為o(1);
#include
using
namespace std;
void
swap
(int
*&arr,
int index1,
int index2)
void
leftunique
(int
* arr,
int len)
}void
sort
(int
*&arr,
int len)
}int
main()
給定乙個整型矩陣matrix表示乙個網路,1表示有路,0表示無路,每個位置只要不越界,都有上下左右四個方向,求從左上角到右下角最短通路值。如matrix為:
1 0 1 1 1
1 0 1 0 1
1 1 1 0 1
0 0 0 0 1
通路由12個1構成,返回12.
#include
#include
#include
using
namespace std;
void
walkto
(int pre,
int tor,
int toc, vectorint>>
&m, vectorint>>
&mp, queue<
int>
&rq, queue<
int>
&cq)
intminpath
(vectorint>> m)
return res;
}int
main()
int res =
minpath
(in)
; cout << res << endl;
getchar()
;return0;
}
給定乙個無序整形陣列arr,找到陣列中未出現的最小正整數。
如:arr=[-1,2,3,4]。返回1;arr=[1,2,3,4],返回5;
#include
using
namespace std;
void
swap1
(int
*&arr,
int index1,
int index2)
intminnum
(int
* arr,
int len)
return l +1;
}int
main()
給定乙個整型陣列arr,返回排序後的相鄰兩數的最大差值。
arr=[9,3,1,10],排序之後為[1,3,9,10],相鄰兩個數之間最大插值為6,返回6即可。
如果arr長度為n,要求時間複雜度為o(n).
類似桶排序思想
#include
#include
using
namespace std;
intbucket
(long num,
long len,
long min,
long max)
intmaxgap
(int
* arr,
int len)
if(min == max)
return0;
bool
* hasnum =
newbool
[len +1]
;int
* maxs =
newint
[len +1]
;int
* mins =
newint
[len +1]
;for
(int i =
0; i <= len; i++
)int bid =0;
for(
int i =
0; i < len; i++
)int res =0;
int lastmax =0;
int i =0;
while
(i <= len)
}for
(; i <= len; i++)}
return res;
}int
main()
分類問題(六)誤差分析
誤差分析 如果上一章中的分類器是乙個真實的專案,則我們最好是要遵循機器學習專案步驟 探索資料 準備資料 嘗試多個模型 列出表現最好的幾個模型 使用gridsearchcv對超引數進行調優 盡可能實現自動化。現在,假設我們已經有了乙個效能還不錯的模型,接下來我們要找一些辦法去優化 提公升它。其中乙個辦...
陣列問題之七
自然數陣列的排序 奇數下標都是奇數或者偶數下標都是偶數 子陣列的最大累加和問題 在陣列中找到乙個區域性最小的位置 陣列中子陣列的最大累乘積 陣列小和定義如下 陣列s 1,3,5,2,4,6 在s 0 的左邊小於等於s 0 的數的和為0,在s 1 的左邊小於或等於s 1 的數的和為1,在s 2 的左邊...
陣列的分類
一 索引陣列 索引陣列 一般表示陣列元素在陣列中的位置。在php中陣列元素可以是任意型別。鍵 值,在陣列中,鍵不相同的,值可以相同。array push 將乙個或多個單元壓入陣列的末尾 入棧 range 建立乙個包含指定範圍單元的陣列。array range start,limit start 開始...