第 358 场周赛 - 力扣(LeetCode)

2815. 数组中的最大数对和 - 力扣(LeetCode)

双for遍历即可

class Solution {
public:
int maxSum(vector<int>& nums) { auto re = [](int x){
int ma = 0;
while(x){
if(x % 10 > ma) ma = x % 10;
x /= 10;
}
return ma;
}; int n = nums.size();
int ans = -1;
for(int i = 0;i < n;i ++){
for(int j = i + 1;j < n;j ++){
if(re(nums[i]) == re(nums[j]) && nums[i] + nums[j] > ans)
ans = nums[i] + nums[j];
}
} return ans;
}
};

2816. 翻倍以链表形式表示的数字 - 力扣(LeetCode)

不太常用链表,还是现查了一下怎么用qwq,还写了个字符串乘\(2\)的函数orz

原版本

CLICK ME
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
string multiplyByTwo(const std::string& numberString) {
std::string num1(numberString.rbegin(), numberString.rend());
string num2 = num1;
string result = "";
int carry = 0;
for (int i = 0; i < num1.length(); i++) {
int digit1 = num1[i] - '0';
int digit2 = num2[i] - '0';
int sum = digit1 + digit2 + carry;
int currentDigit = sum % 10;
result.insert(0, 1, currentDigit + '0');
carry = sum / 10;
}
if (carry != 0) {
result.insert(0, 1, carry + '0');
}
return result;
}
ListNode* doubleIt(ListNode* head) {
string s = "";
while(head != nullptr){
s += head->val + '0';
head = head->next;
}
s = multiplyByTwo(s);
ListNode *ans = nullptr;
ListNode *num = nullptr;
for(int i = 0;i < s.size();i ++){
ListNode* t = new ListNode;
t->val = s[i] - '0';
t->next = nullptr;
if(ans == nullptr){
ans = t;
num = t;
}else{
num->next = t;
num = t;
}
}
return ans;
}
};

后来看了灵神的代码,发现很妙,一个数乘\(2\)最多就只会进一位,所以在最开始判断首位数是不是大于4,是的话就在前面新加一个节点,其余的就是跟着模拟,如果下一个数大于4,那么它前一个数就应该进1,它自己就等于二倍后的个位数了

class Solution {
public:
ListNode* doubleIt(ListNode* head) {
if(head->val > 4)
head = new ListNode(0, head);
for(auto i = head; i; i = i->next){
i->val = i->val * 2 % 10;
if(i->next && i->next->val > 4)
i->val ++;
}
return head;
}
};

2817. 限制条件下元素之间的最小绝对差 - 力扣(LeetCode)(平衡树+双指针)

用双指针把每隔\(x\)个元素都加进去,但是不用弹出,因为题目说了是至少大于等于\(x\)个数,指针往下一个数扫描时,它的前\(x+1\)个数也能被存进去,然后就是二分去找一个最小值,因为二分查找的是第一个大于等于当前的数,但是也可能它的前一个差值更小,这里也要比较它二分查找出的前一个,因为要做自减操作,防止空指针我们要提前在set里存一个最小值和一个最大值,\(INT\_MIN / 2\)是防止数据溢出int范围,如果你set存的是long long类型那就不用担心这个问题了

class Solution {
public:
int minAbsoluteDifference(vector<int>& nums, int x) {
int ans = INT_MAX, n = nums.size();
set<int> s = {INT_MIN / 2, INT_MAX};
for(int i = x;i < n;i ++){
s.insert(nums[i - x]);
auto t = s.lower_bound(nums[i]);
ans = min({ans, *t - nums[i], nums[i] - *--t});
}
return ans ;
}
};

2818. 操作使得分最大 - 力扣(LeetCode)(质因数分解+单调栈+快速幂)

看了很多佬说这道题不错,不过有点难,先留着,后面其他题补了再来补

第 358 场周赛 - 力扣(LeetCode)的更多相关文章

  1. 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数

    最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...

  2. 力扣Leetcode 45. 跳跃游戏 II - 贪心思想

    这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...

  3. 【力扣leetcode】-787. K站中转内最便宜的航班

    题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...

  4. 力扣Leetcode 面试题56 - I. 数组中数字出现的次数

    面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...

  5. 力扣Leetcode 1518. 换酒问题

    小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒.你购入了 numBottles 瓶酒. 如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的. 请你计算 最多 能喝到多少瓶酒. 示例: ...

  6. 力扣Leetcode 461. 汉明距离

    给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换. 完成所有替换操作后,请你返回这个数组. 示例: 输入:arr = [17,18,5,4,6,1] 输 ...

  7. 力扣Leetcode 198. 打家劫舍

    打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定 ...

  8. 力扣Leetcode 680. 验证回文字符串 Ⅱ

    验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca ...

  9. 力扣Leetcode 560. 和为K的子数组

    和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1 ...

  10. 力扣Leetcode 50. 实现Pow(x, n)

    实现Pow(x, n) 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 ...

随机推荐

  1. MySql用户与权限控制

    MySql用户与权限控制 -- 刷新权限命令 # -- 刷新mysql权限命令 flush privileges; 用户管理 1.查看用户 #查看用户 USE mysql; SELECT host,u ...

  2. 一招解决github访问慢的问题

    ​ 之前我在网上搜过解决办法,其中一个是修改 hosts 文件,但是效果不太理想.我在这里给大家推荐github上的一个开源项目:FastGithub .用了这个之后,效果就比较理想了,次次都能访问到 ...

  3. linux 4.19 ip重组

    IP重组 ip重组这部分 4.19内核与3.10内核有些差别,4.9.134以后内核中不使用低水位和工作队列了,同时使用了rhashtable 替代了 hash bucket的概念,在3.10内核中使 ...

  4. ARM+DSP!全志T113-i+玄铁HiFi4开发板硬件说明书(1)

    前 言 本文档主要介绍开发板硬件接口资源以及设计注意事项等内容,测试板卡为全志T113-i+玄铁HiFi4开发板.由于篇幅问题,本篇文章共分为上下两集,点击账户可查看更多内容详情,开发问题欢迎留言,感 ...

  5. 在Mac上使用Emacs初步

    其他操作系统估计也差不多. 安装 如果使用brew就是brew install emacs.安装后不会在Applications里面显示一个程序,需要在命令行里执行emacs. 使用 进入和退出 上面 ...

  6. Vue 组件间通信有哪几种方式?

    父子通信 (1)父组件向子组件传值props <button-counter :title="send"></button-counter> Vue.com ...

  7. 基于EF Core存储的国际化服务

    前言 .NET 官方有一个用来管理国际化资源的扩展包Microsoft.Extensions.Localization,ASP.NET Core也用这个来实现国际化功能.但是这个包的翻译数据是使用re ...

  8. Vue3 之 reactive、ref、toRef、toRefs 使用与区别,源码分析详细注释

    目录 reactive.ref.toRef.toRefs 使用与区别 reactive ref 作用及用法 toRef 作用及用法 toRefs 作用及用法 ref,toRef,toRefs 源码实现 ...

  9. 使用 useLazyAsyncData 提升数据加载体验

    title: 使用 useLazyAsyncData 提升数据加载体验 date: 2024/7/19 updated: 2024/7/19 author: cmdragon excerpt: 摘要: ...

  10. [rCore学习笔记 012]彩色化LOG

    实验要求 实现分支:ch1 完成实验指导书中的内容并在裸机上实现 hello world 输出. 实现彩色输出宏(只要求可以彩色输出,不要求 log 等级控制,不要求多种颜色) 隐形要求 可以关闭内核 ...