第 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. 一个基于SSM的CRUD的标准写法

    CRUD即CREATE,READ,UPDATE,DELETE的首字母的合写,意思是增读改删.前人为了便于发音和理解,改为增删改查. CRUD基本上是软件开发中中相当部分功能的最小功能模块构成,虽然软件 ...

  2. CLR via C# 笔记 -- 委托(17)

    1. 委托是方法的包装器,使方法能通过包装器来间接回调.在一个类型中通过委托来调用另一个类型的私有成员,只要委托对象是具有足够安全性/可访问性的代码创建,便没有问题. 2. 协变性:方法能返回从委托的 ...

  3. Linux内核中的各种文件系统:proc、tmpfs、devfs、sysfs

    Linux内核中的各种文件系统:proc.tmpfs.devfs.sysfs 背景 刚学完proc文件系统在内核驱动 中的使用,就看到另外的sysfs的有关接口.很好奇proc文件系统和sysfs文件 ...

  4. 面试官:JVM调优,主要针对是哪一个区域?JVM内存结构是怎样的?

    作为一个Java程序员,在日常的开发中,不必像C/C++程序员那样,为每一个内存的分配而操心,JVM会替我们进行自动的内存分配和回收,方便我们开发.但是一旦发生内存泄漏或者内存溢出,如果对Java内存 ...

  5. 2.上传hdfs系统:将logs目录下的日志文件每隔十分钟上传一次 要求:上传后的文件名修为:2017111513xx.log_copy

    先在hdfs系统创建文件夹logshadoop fs -mkdir /logs 编辑shell脚本 filemv.sh #!/bin/bashPATH=/usr/local/bin:/bin:/usr ...

  6. FreeRDP使用,快速找出账户密码不正确的服务器地址

    最近有个需求,需要找出服务器未统一设置账户密码的服务器,进行统一设置,一共有一百多台服务器,一个个远程登录看,那得都费劲啊,这时候就可以用到FreeRDP这个远程桌面协议工具,FreeRDP下载,根据 ...

  7. k8s 实战 3----标签

    如果你对k8s还不了解,可以看下前文k8s 实战 1 ---- 初识 (https://www.cnblogs.com/jilodream/p/18245222)k8s 实战 2 ---- pod 基 ...

  8. 安卓app产品:应用分析工具

    这是我独立开发的一款工具类安卓app(名称:应用分析工具),其主要功能是:(Solo 社区投稿) 1.基础信息查看 - 可查看app的包名.签名.权限.版本信息.AndroidManifest.xml ...

  9. 国内版Unity 6 Preview编辑器无法切换到DX12的解决方案(6000.0.5f1c1已解决)

    先放解决方案的链接:https://www.cnblogs.com/horeaper/p/18200364 6000.0.0f1c1问题依旧,仍然是没有D3D12文件夹: 不仅新文件不加,旧文件(ha ...

  10. [oeasy]python0081_[趣味拓展]ESC键进化历史_键盘演化过程_ANSI_控制序列_转义序列_CSI

    光标位置 回忆上次内容 上次了解了 新的转义模式 \033 逃逸控制字符 escape 这个字符 让字符串 退出标准输出流 进行控制信息的设置 可以设置 光标输出的位置       ​   添加图片注 ...