第 358 场周赛 - 力扣(LeetCode)
第 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)的更多相关文章
- 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数
最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...
- 力扣Leetcode 45. 跳跃游戏 II - 贪心思想
这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...
- 【力扣leetcode】-787. K站中转内最便宜的航班
题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...
- 力扣Leetcode 面试题56 - I. 数组中数字出现的次数
面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...
- 力扣Leetcode 1518. 换酒问题
小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒.你购入了 numBottles 瓶酒. 如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的. 请你计算 最多 能喝到多少瓶酒. 示例: ...
- 力扣Leetcode 461. 汉明距离
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换. 完成所有替换操作后,请你返回这个数组. 示例: 输入:arr = [17,18,5,4,6,1] 输 ...
- 力扣Leetcode 198. 打家劫舍
打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定 ...
- 力扣Leetcode 680. 验证回文字符串 Ⅱ
验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca ...
- 力扣Leetcode 560. 和为K的子数组
和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1 ...
- 力扣Leetcode 50. 实现Pow(x, n)
实现Pow(x, n) 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 ...
随机推荐
- Typora行内公式识别不了
Typora行内公式识别不了,主要是因为行内公式属于LaTeX扩展语法,并非Markdown的通用标准 需要在Typora的"文件"-"偏好设置"-" ...
- 06-Python类与对象
什么是类 百度百科: 类是对象的抽象,对象是对客观事物的抽象. 用通俗的话来说: 类是类别的意思,是数据类型. 对象是类别下的具体事物. 也就是说: 类是数据类型,对象是变量. 比如: 自定义一种数据 ...
- 红黑树详细讲解(结合JavaTreeMap)
1:红黑树简介 红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性.同时红黑树更是一颗自平衡的排序二叉树.根据二叉查找树的概念可以得出正常情况下查找的时间复杂度为O(log n),但是 ...
- ubuntu 安装 github desktop
原文: https://gist.github.com/berkorbay/6feda478a00b0432d13f1fc0a50467f1 sudo wget https://github.com/ ...
- P6655 题解
直接计数其实不好记,不如计数转期望. 令 \(f_i\) 表示点 \(i\) 成为制高点概率,不难发现期望就是 \(\sum f_i\). 根据定义对于 \(f\) 我们有如下转移 \(f_i = \ ...
- 通俗讲解promise
JavaScript 中的 Promise 是一种特殊的对象,它用于解决异步编程中的复杂性问题,特别是回调的问题.我们可以把它比喻成现实生活中的一个"承诺": 想象一下,你 ...
- SELECT *问题
1.mysql拿到一条命令,会去解析命令.优化查询,然后去存储引擎执行查找.SELECT * 语句取出表中的所有字段,会解析更多的 对象,字段,权限,属性相关,不论该字段的数据对调用的应用程序是否有用 ...
- TypeScript 学习笔记 — 交叉类型、条件类型和条件分发(八)
目录 交叉类型 条件类型 1. 直接传入判断的条件 2. 把条件当成泛型传入 3. 多重条件判断 4. 判断接口中的类型 extends 父子关系(类型等级) 条件分发机制 实际开发中如何避免? &l ...
- card 卡片 html
{% extends 'base.html' %} {% block content %} <div class="container"> <h1>客户信息 ...
- django python 获取当天日期
from datetime import date today = date.today() print(today) 在Python中,你可以使用datetime模块来获取当前日期.具体获取当前日期 ...