T1
题目 【Leetcode|leetcode:第260场周赛复盘】
文章图片
这种题没啥好讲的,直接放代码
class Solution {
public:
int maximumDifference(vector& nums) {
int max=-1;
for(int i=0;
imax){
max=nums[j]-nums[i];
}
}
}
return max==0?-1:max;
}
};
T2 题目
文章图片
一开始我就想歪了,以为是先让第一个机器走最大分数的那条路,虽然我的直觉认为这样是不对的,但是也没想到其他的办法,所以就直接利用dfs来写了
class Solution {
public:
int f[2][2]={{1,0},{0,1}};
vector> book1;
vector> book2;
vector> ans;
long long sum=0;
long longmax1=0;
void dfs(int x,int y,vector>&grid){
if(x==1&&y==grid[0].size()-1){
if(sum>max1){
cout<<1||tx<0||ty<0||ty>grid[0].size()-1)
continue;
if(!book1[tx][ty]){
book1[tx][ty]=1;
sum+=grid[tx][ty];
dfs(tx,ty,grid);
sum-=grid[tx][ty];
book1[tx][ty]=0;
}
}
}
long long gridGame(vector>& grid) {
vector> temp(2,vector(50001));
book1=temp;
book2=temp;
ans=temp;
dfs(0,0,grid);
ans[0][0]=1;
for(int i=0;
i<2;
i++){
for(int j=0;
j
结果就通过6个用例
文章图片
后来看题解,发现其思路理清楚的话其实也不难~
借用一位大佬的思路
文章图片
看到好多大佬使用了前缀和,然后自己也学习了下
推荐学习博客:算法基础-前缀和
代码如下:
class Solution {
public:
long long gridGame(vector>& grid) {
vector>grid1(2,vector(grid[0].size()));
for(int i=0;
i<2;
i++){
for(int j=0;
j
后言 后面的两题就没用看了,所以也就不打算写后两题,又是自己只做出来一题,还是有点难受啊,自己再接再励啊~
推荐阅读
- 《Java入门100练》|【第26天】给定 n 个元素的升序数组nums,求实现一个函数在nums中寻找target的下标 | 初识二分查找
- 《Java入门100练》|【第25天】给定一个长度为 n 的数组,统计每个数出现的次数 | 计数哈希
- 《Java入门100练》|【第24天】给定一个长度为 n 的数组,将元素 X 插入数组指定的位置 | 数组插入操作
- Leetcode复盘|LeetCode 第 298 场周赛
- 《力扣周赛题解》|【周赛复盘】LeetCode第298场单周赛
- 《力扣周赛题解》|【周赛复盘】LeetCode第80场双周赛
- LeetCode|LeetCode_Array_42. Trapping Rain Water 接雨水【双指针】【Java】【困难】
- leetcode|leetcode 滑动窗口
- leetcode|动态规划-爬楼梯,连续子数组的最大和