传送门 t1 千位分隔数 给定一个整型数,给它每三位加上一个分隔符。 做法有很多,憨一点可以用取出每一位数字来做,但看这个范围估计是要炸的,所以我这里选择转成string来做。 转成string,计数,每三位加上一个"."最后翻转一下就行了,记得处理一下前缀“.”。 ```cpp class Solution { public: string thousandSeparator(int n) { string str = to_string(n); if(n < 1000) return str; int m = str.size(); string ans = ""; int cnt = 0; for(int i = m-1; i >= 0; i--) { …
传送门 T1去掉最低工资和最高工资后的工资平均值 签到题,直接写。 ```cpp class Solution { public: double average(vector& salary) { int n = salary.size(); double sum = 0; int ma = -INT_MAX, mi = INT_MAX; for(int i = 0; i < n; i++) { ma = max(ma, salary[i]); mi = min(mi, salary[i]); sum …
传送门→ T1: 商品折扣后的最终价格 签到题,挺简单的。按照题意直接写就行。 ```cpp class Solution { public: vector finalPrices(vector& prices) { vector ans; int n = prices.size(); for(int i = 0; i < n; i++) { bool flag = 0; int tmp; for(int j = i+1; j < n; j++) { if(prices[j] …
传送门→ T1:通过翻转子数组使两个数组相等 这题挺水的。题目允许任意次的变换,所以理论上只要两个数组的长度和组成元素一样那么一定可以在有限次变换后变为等价数组。统计一下两个数组的sum和length然后判断就好。 其实排序后判断每一个元素是否相同也可以,但是用一遍循环求和会更快一点点。 ```cpp class Solution { public: bool canBeEqual(vector& target, vector& arr) { int n = target.size(); int m = arr.size(); if(n != m) return false; int sum1 = 0, sum2 = 0; for(int i = 0 ; i < n; i++) { …
传送门→ 这双周赛改成贪心赛算了,fo了。 A拥有糖果最多的孩子 贪心+暴力。两重循环外层枚举每一个小朋友,内层去找当前的最大糖果数量。如果当前小朋友的糖加上额外给的能大于等于这个最大值就push一个1进去,否则push一个0。 ```cpp class Solution { public: vector kidsWithCandies(vector& candies, int extraCandies) { vector ans; int n = candies.size(); for(int i = 0; i < n; i++) { int maxn = 0; for(int j = 0; j < n; j++) if(i == j) …