文章目录
- 一、DP35 【模板】二维前缀和
- 1.题目简介
- 2.解题思路
- 3.代码
- 4.运行结果
- 二、面试题 01.01. 判定字符是否唯一
- 1.题目简介
- 2.解题思路
- 3.代码
- 4.运行结果
- 三、724. 寻找数组的中心下标
- 1.题目简介
- 2.解题思路
- 3.代码
- 4.运行结果
- 总结
一、DP35 【模板】二维前缀和
1.题目简介
DP35 【模板】二维前缀和
题目来源于牛客网,可通过链接进行练习。
2.解题思路
3.代码
#include <iostream>
using namespace std;
#include<vector>
int main() {int n, m, q;while (cin >> n >> m >> q) {vector<vector<long long>> nums(n + 1, vector<long long> (m + 1));for(int i = 1;i <= n; ++i){for(int j = 1;j <= m; ++j){cin>>nums[i][j];}}vector<vector<long long>> dp(n + 1, vector<long long> (m + 1));for(int i = 1;i <= n; ++i){for(int j = 1;j <= m; ++j){dp[i][j] = nums[i][j] + dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1];}}while(q--){int x1 = 0, y1 = 0, x2 = 0, y2 = 0;cin >> x1 >> y1 >> x2 >> y2;cout<<dp[x2][y2] - (dp[x1 - 1][y2] + dp[x2][y1 - 1] - dp[x1 - 1][y1 - 1])<<endl;}}return 0;
}
4.运行结果
二、面试题 01.01. 判定字符是否唯一
1.题目简介
面试题 01.01. 判定字符是否唯一
题目来源于Leetcode,可通过链接练习。
2.解题思路
3.代码
class Solution {
public:bool isUnique(string astr) {//用一个整数来充当哈希表int n = 0;for(auto& e : astr){int t = e - 'a';if((n & (1 << t)) == 0){n ^= (1 << t);}else{return false;}}return true;}
};
4.运行结果
三、724. 寻找数组的中心下标
1.题目简介
724. 寻找数组的中心下标
题目来源于Leetcode,可通过链接练习。
2.解题思路
3.代码
class Solution {
public:int pivotIndex(vector<int>& nums) {vector<int> lsum(nums.size());//左边的前缀和vector<int> rsum(nums.size());//右边的前缀和for(int i = 1;i < nums.size(); ++i){lsum[i] = lsum[i - 1] + nums[i - 1];}for(int i = nums.size() - 2;i >= 0; --i){rsum[i] = rsum[i + 1] + nums[i + 1];}for(int i = 0;i < nums.size(); ++i){if(lsum[i] == rsum[i]) return i;}return -1;}
};
4.运行结果
总结
今天是算法练习的第9天,继续加油。
如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!