LeetCodeWeeklyContest-174

经典面试题-扔鸡蛋问题 Leetcode 887. 鸡蛋掉落 很经典的题目,力扣上的链接:887. 鸡蛋掉落 题目大意是:有K个鸡蛋,N层楼,求你找出在最坏情况下最小的尝试次数找出鸡蛋碎的临界楼层。 解析 如果不限制鸡蛋次数,想找出最少的尝试次数,直接二分区间即可,比如一共8层,第一次看看4层碎不碎,4层不碎,去6层扔…,4层碎了,去2层扔看看碎不碎… 何为最坏情况:鸡蛋破碎一定发生在搜索区间穷尽时,同时也要保证在该种情况下使得尝试次数最少。 现在给了鸡蛋... 阅读详情

题目传送:第174周赛

Rank: 789 / 1659
Grade:7/18
加油!


力扣好像改版了,之前周赛结束之后,还是能进去的,现在结束之后直接进到题库了,好像也还不错哦~

1.方阵中战斗力最弱的K行

用一个结构体来保存记录,自定义排序的比较函数,签到题。

struct node{
	int index;
	int armynum;
};
bool cmp(node a,node b){
	if(a.armynum!=b.armynum)
		return a.armynum < b.armynum;
	else  return a.index < b.index; 
}
class Solution {
public:
    vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
	    int m = mat.size(),n = mat[0].size();
	    node arr[m];
        memset(arr,0,sizeof(arr));
	    for(int i=0;i<m;i++){
	 	    arr[i].index = i;
	 	    for(int j=0;j<n;j++){
	 		    if(mat[i][j]==1) arr[i].armynum ++;
		    }
	    } 
        
	    sort(arr,arr+m,cmp);
	    vector<int> res;
	    for(int i=0;i<k;i++){
		    res.push_back(arr[i].index);
	    }  
	    return res;    
    }
};

2.数组大小减半

找到最小元素个数能使集合中元素的个数减半。统计每个元素出现的个数,然后对个数递减排序,遍历个数数组,直到减半为止…

class Solution {
public:
    int minSetSize(vector<int>& arr) {
 	sort(arr.begin(),arr.end());
    int n = arr.size(),cnt = 1;
 	vector<int> res;
 	
    for(int i=1;i<n;i++){
		if(arr[i-1]!=arr[i]){
			res.push_back(cnt);
			cnt = 1;
		}
		else cnt ++;
	}
    res.push_back(cnt);
    // for(int i=0;i<res.size();i++)
    //     cout << res[i] << " ";
	sort(res.begin(),res.end(),greater<int>());
	int ans = 0,r=0;
	for(int i=0;i<res.size();i++){
		ans += res[i],r++;
		if(ans>=n/2){
			return r;
		}
	}
    return n;
 }
};

3.分裂二叉树的最大乘积

还是搜索,dfstotal函数是用来求树的和,我觉得第二个dfs函数很难想。

typedef  long long ll;
class Solution {
    ll total = 0,ans=0,mod=1e9+7;
    void  dfstotal(TreeNode *root){
        if(root==NULL) return ;
        total += root->val;
        dfstotal(root->left);
        dfstotal(root->right);
    }
    ll dfs(TreeNode* root){
        if(root==NULL) return 0;
        ll suml = dfs(root->left),sumr = dfs(root->right);
        ans = max(ans,suml*(total-suml));
        ans = max(ans,sumr*(total-sumr));
        return root->val+suml+sumr;
    }
public:
    int maxProduct(TreeNode* root) {
        dfstotal(root);
        dfs(root);
        return ans%mod;
        
    }
};

4.跳跃游戏 V

参考:dp记忆化搜索
f[i]表示从下标i出发能访问的最多元素个数,题目要求只能从高处往低处跳,中间不能有更高的,一开始理解错题意了,以为只有有一个矮的就可以了,没想到是都要比起跳点矮…所以只要有一个更高,就break。里面会涉及到很多重复计算,可以用f[i]数组来记录,也就是记忆化,如果f[i]有值,则不用再去搜索。

#define N 100050
int f[N],a[N];
int dfs(int i,int d,int n){
    if(f[i]!=-1) return f[i];
    f[i] = 1;
    for(int u=i+1;u-i<=d&&u<n;u++){
        if(a[u]>=a[i]) break;
        f[i] = max(f[i],1+dfs(u,d,n));
    }
    for(int u=i-1;u>=0&&i-u<=d;u--){
        if(a[u]>=a[i]) break;
        f[i] = max(f[i],1+dfs(u,d,n));
    }
    return f[i];   
}
class Solution {
public:
int maxJumps(vector<int>& arr, int d) {
   	int n = arr.size(),ans = 0;
    for(int i=0;i<n;i++) a[i] = arr[i];
    memset(f,-1,sizeof(f));
    for(int i=0;i<n;i++){
        ans = max(ans,dfs(i,d,n));
    }
	 return ans;
}
};
1788445834680.apk 立即下载

相关推荐

运动员运动表现纵向数据集

纵向运动员运动表现数据集包含250名运动员10000条训练会话重复观测记录,涵盖篮球、排球、足球、跑步、游泳和无损伤跑步者六个运动类别。包括速度、加速度、反应时间、准确性、耐力、力量、敏捷性等表现变量,以及训练负荷、疲劳、恢复和训练成效指标。用于研究和实验分析。

力扣周赛总结

ID Rank AC 题解 周赛155 1448 / 1602 1/4 LeetCodeWeeklyContest-155 周赛156 598 / 1432 1/4 LeetCodeWeeklyContest-156 周赛157 1125 / 1216 0/4 LeetCodeWeeklyContest-157 周赛158 772 / 1715 1/4 LeetCode...

Sinclair 976

双立柱油脂加注机.rar

双立柱油脂加注机.rar

2020 力扣杯!Code Your Future 春季全国编程大赛 题解

Rank:1179/4093分数:12/30AC:3/5Rank :1179/4093 \quad分数:12/30 \quad AC:3/5Rank:1179/4093分数:12/30AC:3/5 其实有9293人报名的… LCP 06. 拿硬币 看起来是个模拟,其实不用 class Solution { public: int minCount(vector<int>&amp...

Sinclair 976

LeetCodeWeeklyContest-161

传送门: 第 161 场周赛 交换字符使得字符串相同 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 “x” 和 “y”,你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候,你都可以在两个字符串中各选一个字符进行交换。 交换只能发生在两个不同的字符串之间,绝对不能发生在同一个字符串内部。也就是说,我们可以交换 s1[i] 和 s2[j],但不能交换 s1[i...

Sinclair 743

LeetCodeWeeklyContest-183

Rank: 1512 / 3754 AC 2/4 题目传送 非递增顺序的最小子序列 其实并非是DP,而是简单的签到题 class Solution { public: vector<int> minSubsequence(vector<int>& nums) { int sum = 0,n= nums.size(),cur=0; ...

Sinclair 707

LeetCodeWeeklyContest-160

题目传送门 找出给定方程的正整数解 签到题的新包装,我没有玩过的船新版本。 class Solution { public: vector<vector<int>> findSolution(CustomFunction& c, int z) { vector<vector<int>> res; for...

Sinclair 658

LeetCodeWeeklyContest-186

Rank:862/3107AC:2/4Rank:862 / 3107 \quad AC:2/4Rank:862/3107AC:2/4 题目 5392. 分割字符串的最大得分 枚举切分点即可,或者求前缀和和后缀和也行 class Solution { public: int tonum(string s,int x){ int res = 0; if(x){ ...

Sinclair 571

LeetCodeWeeklyContest-155

题目传送 Problem1 最小绝对差 难度:Easy 题目 给你个整数数组 arr,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 思路 遍历,边找边push,只需一遍 貌似代码写复杂了 题解 #include<bits/stdc++.h> using namespace std; /* LeetCode WeeklyContest...

Sinclair 387

LeetCodeWeeklyContest-159

5230. 缀点成线 在一个 XY 坐标系中有一些点,我们用数组 coordinates 来分别记录它们的坐标,其中 coordinates[i] = [x, y] 表示横坐标为 x、纵坐标为 y 的点。 请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。 思路 根据前两个点构造直线,看后续的点是否在直线上。 直线方程为 ax+by+c=0ax+by...

Sinclair 361

LeetCodeWeeklyContest-158

戒骄戒躁,勇往直前。 传送门:第 158 场周赛 分割平衡字符串 在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。 返回可以通过分割得到的平衡字符串的最大数量。 输入:s = “RLRRLLRLRL” 输出:4 解释:s 可以分割为 “RL”, “RRLL”, “RL”, “RL”, 每个子字符串中都包含相同数量的 ‘...

Sinclair 356

LeetCodeBinaryWeeklyContest-24

Rank:1264/1898AC:1/4Rank:1264 / 1898 \quad AC:1/4Rank:1264/1898AC:1/4 1413. 逐步求和得到正数的最小值 求个前缀和即可 class Solution { public: int minStartValue(vector<int>& nums) { int n = nums.size...

Sinclair 353

LeetCodeWeeklyContest-157

秋意寂寥,国庆假期归来,“百废待兴”。 路漫漫其修远兮,吾将上下而求索。 题目传送 玩筹码 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价为 0。 将第 i 个筹码向左或者右移动 1 个单位,代价为 1。 最开始的时候,同一位置上也可能放着两个或者更多的筹码...

Sinclair 324

LeetCodeWeeklyContest-182

Rank:585/3910 \quad AC: 3/4 上周的周赛,补一下题解 题目传送:182周赛 1394. 找出数组中的幸运数 class Solution { public: int findLucky(vector<int>& arr) { int count[600]; memset(count,0,sizeof(cou...

Sinclair 310

LeetCodeBinaryWeeklyContest-22

Rank: 609 / 2041 AC 2/4 第一次写双周赛,晚上写双周赛的人比周赛的还是少一些的… 第 22 场双周赛 1385. 两个数组间的距离值 数据范围比较小,暴力 时间复杂度O(mn)O(mn)O(mn) class Solution { public: int findTheDistanceValue(vector<int>& arr1, vector...

Sinclair 295

食品包装礼品包装设备.rar

食品包装礼品包装设备.rar

全自动iphone贴膜机3.rar

全自动iphone贴膜机3.rar

上一篇: 《机器学习实战》复现python语法不兼容遇到的问题
下一篇: PTA拯救007 (BFS)
SinclairWang
博客等级 码龄8年 63粉丝 109原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值