LeetCode单周赛第320场 AcWing周赛第78场总结
admin
2024-02-03 19:53:32
0

1. LeetCode单周赛第320场

1.1 数组中不等三元组的数目

1.1.1 原题链接:力扣icon-default.png?t=M85Bhttps://leetcode.cn/problems/number-of-unequal-triplets-in-array/

1.1.2 解题思路:

        暴力遍历咯。

1.1.3 代码:

class Solution {
public:int unequalTriplets(vector& nums) {int n = nums.size();int res = 0;for(int i = 0; i < n; i ++ ) for(int j = i + 1; j < n; j ++ ) for(int k = j + 1; k < n; k ++ ) if(nums[i] != nums[j] && nums[i] != nums[k] && nums[j] != nums[k]) res ++;return res;}
};

1.2 二叉搜索树最近节点查询

1.2.1 原题链接:力扣icon-default.png?t=M85Bhttps://leetcode.cn/problems/closest-nodes-queries-in-a-binary-search-tree/

1.2.2 解题思路:

        1、先把树种的元素存到数组中;

        2、把数组中的元素排序,然后二分找满足要求的元素。

1.2.3 代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:void tra(TreeNode* root, vector& t){if(root == nullptr) return;t.push_back(root->val);tra(root->left, t);tra(root->right, t);}vector> closestNodes(TreeNode* root, vector& queries) {vector> res;vector tmp;tra(root, tmp);sort(tmp.begin(), tmp.end());int n = tmp.size();for(auto& x: queries) {int a, b;int l = 0, r = n - 1;while(l < r) {int mid = l + r + 1 >> 1;if(tmp[mid] > x) r = mid - 1;else l = mid;}if(tmp[l] <= x) a = tmp[l];else a = -1;l = 0, r = n - 1;while(l < r) {int mid = l + r >> 1;if(tmp[mid] < x) l = mid + 1;else r = mid;}if(tmp[l] >= x) b = tmp[l];else b = -1;res.push_back({a, b});}return res;}
};

1.3 到达首都最少油耗

1.3.1 原题链接:力扣icon-default.png?t=M85Bhttps://leetcode.cn/problems/minimum-fuel-cost-to-report-to-the-capital/

1.3.2 解题思路:

        以 0 为根,统计每个子树中节点的个数cur,那么每个子树需要的车的数量就是 cur / seats 向上取整。

1.3.3 代码:

#define N 100010
#define M 200010int h[N], e[M], ne[M], idx;typedef long long ll;class Solution {
public:ll ans = 0;void add(int a, int b){e[idx] = b, ne[idx] = h[a], h[a] = idx ++;}ll dfs(int u, int father, int seats) {ll cur = 1;for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(j != father) {cur += dfs(j, u, seats);}}if(u != 0) {ans += (cur + seats - 1) / seats;  //向上取整}return cur;}long long minimumFuelCost(vector>& roads, int seats) {memset(h, -1, sizeof h);idx = 0;for(auto& road: roads) {add(road[0], road[1]);add(road[1], road[0]);}dfs(0, -1, seats);return ans; }
};

2.AcWing周赛第78场

2.1 商品种类

2.1.1 原题链接:4719. 商品种类 - AcWing题库

2.1.2 解题思路:

        使用set将产品的产地+名称存储到set中,最后返回set的大小即可。

2.1.3 代码:

#include 
#include 
#include 
#include using namespace std;int main()
{int n;cin >> n;unordered_set st;for(int i = 0; i < n; i ++ ) {string a, b;cin >> a >> b;st.insert(a + ' ' + b);}cout << st.size() << endl;return 0;
}

2.2 字符串

2.2.1 原题链接:4720. 字符串 - AcWing题库

2.2.2 解题思路:

        把字符串 s 中的字符一个一个存到答案字符串 res 中,若与 res 中的最后一个字符相同,则把字符串 res 中的最后一个字符删去,反之,则加入到 res 中。最后输出 res 即可。

2.2.3 代码:

#include 
#include 
#include using namespace std;int main()
{string s;cin >> s;string res;for(auto c: s) {if(res.size() && res.back() == c) res.pop_back();else res += c;}cout << res << endl;return 0;
}

2.3 排队

2.3.1 原题链接:4721. 排队 - AcWing题库

2.3.2 解题思路:

        1、用单调队列+二分的思路解决此问题;

        2、从后往前遍历身高,栈里存的是对应身高的下标,每次对栈内下标二分找到比自身矮的最右侧一个人的位置;

        3、对于栈内元素的维护,具有单调性,因为例如,对于寻找比 a[k] (k > i && k > j)的矮的最右侧的一位在哪,如果a[i], a[j]均小于a[k],且 i < j,那么,a[i]就没有存在必要了。

2.3.3 代码:

#include 
#include 
#include using namespace std;typedef long long ll;
const int N = 1e5 + 10;int h[N], stk[N];
int n;
int ans[N];int main()
{scanf("%d", &n);for(int i = 0; i < n; i ++ ) scanf("%d", &h[i]);int top = 0;for(int i = n - 1; i >= 0; i -- ) {if(!top || h[i] <= h[stk[top]]) ans[i] = -1;else {int l = 1, r = top;while(l < r) {int mid = l + r >> 1;if(h[stk[mid]] < h[i]) r = mid;else l = mid + 1;}ans[i] = stk[r] - i - 1;}if(!top || h[i] < h[stk[top]]) stk[++ top] = i;}for(int i = 0; i < n; i ++ ) printf("%d ", ans[i]);return 0;
}

相关内容

热门资讯

智慧吴江app安卓系统,安卓系... 你知道吗?最近吴江地区掀起了一股智慧风潮,一款名为“智慧吴江app”的应用在安卓系统上大受欢迎。这款...
苹果系统听歌app安卓,跨平台... 你有没有发现,无论是走在街头还是坐在家里,音乐总是能瞬间点燃我们的心情?而在这个音乐无处不在的时代,...
安卓系统卡顿根源,性能瓶颈与优... 手机用久了是不是感觉越来越卡?是不是每次打开应用都要等半天,甚至有时候直接卡死?别急,今天就来跟你聊...
电脑系统怎么装安卓系统,电脑系... 你有没有想过,把安卓系统装在你的电脑上,是不是就像给电脑穿上了时尚的新衣呢?想象你可以在电脑上直接使...
安卓系统华为手环app,健康管... 你有没有发现,现在的生活越来越离不开智能设备了?手机、平板、手表……这些小玩意儿不仅让我们的生活变得...
switch lite刷安卓系... 你有没有想过,你的Switch Lite除了玩那些可爱的任天堂游戏,还能干些什么呢?没错,今天我要给...
想买华为但是安卓系统,尽享安卓... 最近是不是也被华为的新款手机给迷住了?看着那流畅的线条和强大的性能,是不是心动了呢?但是,一想到安卓...
怎么拷安卓系统文件,安卓系统文... 你有没有想过,手机里的那些安卓系统文件,其实就像是一扇通往手机世界的秘密通道呢?想要深入了解你的安卓...
安卓系统移植按键失灵,安卓系统... 最近你的安卓手机是不是也遇到了按键失灵的尴尬情况呢?这可真是让人头疼啊!别急,今天就来给你详细解析一...
安卓系统更新管理在哪,全面解析... 你有没有发现,你的安卓手机最近是不是总在提醒你更新系统呢?别急,别急,今天就来手把手教你,安卓系统更...
安卓系统哪里出的,从诞生地到全... 你有没有想过,我们每天离不开的安卓系统,它究竟是从哪里冒出来的呢?是不是觉得这个问题有点儿像是在问星...
最好的电脑安卓系统,最佳电脑安... 亲爱的电脑迷们,你是否在寻找一款既能满足你工作需求,又能让你畅享娱乐的电脑操作系统呢?今天,我要给你...
安卓系统保密性,守护隐私的坚实... 你知道吗?在这个信息爆炸的时代,保护个人隐私变得比以往任何时候都重要。尤其是对于安卓系统用户来说,了...
苹果系统下载安卓版本,安卓版本... 你有没有想过,为什么苹果系统的手机那么受欢迎,却还有人想要下载安卓版本呢?这背后可是有着不少故事呢!...
安卓系统如何下载carplay... 你是不是也和我一样,对安卓系统上的CarPlay功能充满了好奇?想象在安卓手机上就能享受到苹果Car...
退回安卓系统的理由,揭秘安卓系... 你有没有想过,为什么有些人会选择退回到安卓系统呢?这可不是一件简单的事情,背后可是有着不少原因哦!让...
安卓机系统互通吗,共创智能生态 你有没有想过,你的安卓手机里的应用和电脑上的安卓应用是不是可以无缝对接呢?是不是有时候觉得手机上的某...
安卓源码 添加系统应用,系统应... 你有没有想过,手机里的那些系统应用是怎么来的?是不是觉得它们就像天外来物,神秘又神奇?其实,只要你愿...
安卓系统能否播放flv,全面解... 你有没有想过,你的安卓手机里那些珍贵的FLV视频文件,到底能不能顺利播放呢?这可是个让人挠头的问题,...
奔驰c系安卓系统,智能驾驶体验... 你有没有发现,最近开奔驰C系的小伙伴们都在悄悄地谈论一个新玩意儿——安卓系统!没错,就是那个我们手机...