leetcode_数组_相关内容_1(48-66-88-118-119)

对于自己之前写的内容应该做更好的梳理。

1. 48:Rotate Image 传送门:https://leetcode.com/problems/rotate-image/

  大意:给出n*n的一个矩形,进行90‘顺时针旋转。

题解:1.思路:对矩阵,第i行j列的元素逆转过来后就是另一个矩阵的j行n-i列。

AC代码如下:

class Solution {
public:
    void rotate(vector>& matrix) {
        int length=matrix.size();
        if(matrix.empty()) return;
        vector > ans(matrix.size());
        for(int i=0;i

2. 66:Pluse One 传送门: https://leetcode.com/problems/plus-one/

大意:一个数组表示的是一个数,对它执行加1操作。 most significant digit:最高有效位(CSAPP)

题解:进行模拟操作。注意如果最后还有进位的话,则要在数组前再加1个1。

AC代码:

class Solution {
public:
    vector plusOne(vector& digits) {
        if(digits.empty()) return digits;
        int length=digits.size();
        int carry=1;
        int sum;
        for(int i=length-1;i>=0;i--)
        {
        	sum=digits[i]+carry;
        	digits[i]=sum%10;
        	carry=sum/10;
        }
        
        if(carry==1) digits.insert(digits.begin(),1);
        return digits;
    }
};


3. Pacical Triangle

大意:帕斯卡三角形是数组里的必考题。

题解:模拟操作。每次都加入1后用公式计算出结果。注意一些特殊情况(empty(),只有1个等)

AC代码:

class Solution {
public:
    vector> generate(int numRows) {
    	vector > ans;
    	if(numRows==0) return ans;
    	ans.resize(numRows);
    	ans[0].push_back(1);
    	//if(numRows==1) return ans;
    	for(int i=1;i


4. Pasical Triangle II 

大意:是上一题的演进版,要求出三角形第几行的具体值。

题解:在上一题的代码略作修改即可。注意在定义数组ans时要定好大小。

AC代码:

class Solution {
public:
    vector getRow(int rowIndex) {
        	vector > ans;
        	vector a;
    	///if(rowIndex==0) return a;
    	ans.resize(rowIndex+1);
    	ans[0].push_back(1);
    	//if(numRows==1) return ans;
    	for(int i=1;i<=rowIndex;i++)
    	{
    		ans[i].push_back(1);
    		for(int j=0;j


5. 88:Merge Sorted Array  传送门:  https://leetcode.com/problems/merge-sorted-array/

大意:两个数组已经给定排序,要求返回合并后的有序数组。

题解:按照题意要求进行即可。

AC代码:

class Solution {
public:
    void merge(vector& nums1, int m, vector& nums2, int n) {
    	for(int i=0;i




你可能感兴趣的:(字符串,leetcode)