1.N女王の
問題は解決することは困難ではない
クイーンズの各行を格納するために、アレイの行
方法は、ライン上の前の衝突の現在の配置かどうかを各ラインジャッジに時間を置くことである
forループはそれを決定しますこれは現在の行のいずれか
と前の行と競合するかどうかを決定するための内部ループ
それは競合のために途切れることなく配置されている場合、競合を入れて、次のステップで、次の行を配置することを検討し
、そのような命令に課される要件を満たすために、行数まで放電のための計算方法を可能にします
class Solution {
public:
vector<vector<string>> solveNQueens(int n) {
int tot=0;
searsh(0);
}
void searsh(int cur){
if(cur==n-1){tot++;}
int ok=1;
vector<int>C(n-1);
else{
for(int i=0;i<n;i++){
C[cur]=i;
for(int j=0;j<cur;j++){
if( C[cur]==C[j]|| cur-i==j-C[j] || cur+i==j+C[j]){
ok=0;
break;
}
if(ok){search(cur+1); }
}
}
}
}
};
プットの方法をリストアップするように求められたときので、私はこの質問を書いてあります
2.N女王II
3.最大のサブシーケンスと
、この質問時間制限を横断するに従って、私の方法を超過している場合
ので、問題を解決するという考え
、それは計算の大部分であるので、その未満0の一部としていないよりも良好に一度
ので、一度部分は0以上かつ0からカウントを再起動を行います
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res=INT_MIN;
int tempmin=0;
for(auto v:nums){
tempmin+=v;
if(tempmin>=res){res=tempmin;}
if(tempmin<0){tempmin=0;}
}
return res;
}
};
4.スパイラル行列
いくつかの詳細に対処するために、この問題の
垂直左下及び右約主なアイデア
シース4内のwhileループは、循環しています
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
if (matrix.size()==0) return res;
int up=0,down=matrix.size()-1,left=0,right=matrix[0].size()-1;
while(up<=down && left<=right){
for(int i=left;i<=right;i++) res.push_back(matrix[up][i]);
for (int i=up+1;i<=down;i++) res.push_back(matrix[i][right]);
if(up<down && left<right){
for(int i=right-1;i>left;i--) res.push_back(matrix[down][i]);
for(int i=down;i>up;i--) res.push_back(matrix[i][left]);
}
up++;
down--;
left++;
right--;
}
return res;
}
};