Leetcode第321场周赛补题

Leetcode第321场周赛补题

第一题:6245. 找出中枢整数 - 力扣(LeetCode)

分析:由于数组中是差值为1的等差数列,所以可以直接用等差数列求和公式的朴素法更加简便的解决这题,S_{n}=(a_{1}+a_{n})\times n/2,其中的n为总项数。如果不是等差数列的话可以考虑用前缀和来写。

代码实现:

class Solution {
    const int N = 1010;
public:
    int pivotInteger(int n) {
        int a[N],s[N];
        for(int i = 1;i <= n;i ++){
            int sum1 = (1 + i)*i/2;
            int sum2 = (i + n)*(n - i + 1)/2;
            if(sum1 == sum2)return i;
        }
        return -1;
    }
};

第二题:6246. 追加字符以获得子序列 - 力扣(LeetCode)

分析:两个指针i,j。一个i指s,一个j指t,遍历两个数组,指针指的值相等就j++,不相等就i++,遍历完数组最后返回t.length() - j。

代码实现:

class Solution {
public:
    int appendCharacters(string s, string t) {
        int i = 0;
        int j = 0;
        int res = 0;
        while(i < s.length() && j < t.length()){
            if(s[i] == t[j]){
                i ++;
                j ++;
            }
            else i ++;
        }if(i == s.length() && j != t.length())res = t.length() - j;
        return res;
    }
};

Acwing第79场周赛

第一题:4722. 数列元素 - AcWing题库

分析:每次让sum 加1,2,3,···,最后判断一下sum是否等于n即可。

代码实现:

#include
using namespace std;
typedef long long ll;
int n;
int main(){
    cin >> n;
    ll sum = 0;
    for (ll i = 1; sum < n; i ++){
        sum += i;
    }
    if (sum == n) cout <<"YES";
    else cout <<"NO";
    return 0;
}

你可能感兴趣的:(周赛补题,leetcode,算法,职场和发展)