LeetCode 20200201(N皇后,最大子序和,螺旋矩阵)

1.N皇后
这个问题其实不难解决
列一个数组来存放每一行的皇后放在哪儿
方法就是每一行去放置 每次只判断当前放置的是否与之前的冲突就行了
for一个循环来决定它放在当前行的哪一个
然后内部for循环判断是否与前面的某一行冲突
接下来就是 如果冲突就把它break 进行下一个放置 如果不冲突就考虑下一行的放置
直到达到要求的行数 就说明这种放置时允许的 计算作一种放法

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.螺旋矩阵
这道题还有一些细节待解决
主要思想是左右 上下 右左 下上
在while循环中套入4个for循环即可

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;
    }
};

发布了44 篇原创文章 · 获赞 9 · 访问量 3335

猜你喜欢

转载自blog.csdn.net/puying1/article/details/104132981