LCR 139. 训练计划 I
教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以 数组 形式返回。
示例 1:
**输入:**actions = [1,2,3,4,5]
输出:[1,3,5,2,4]
**解释:**为正确答案之一
提示:
0 <= actions.length <= 50000
0 <= actions[i] <= 10000
奇数在左边,偶数在右边;
一个指针指向左边可放的位置(左边的偶数)
一个指针指向右边可放的位置(右边的奇数)
123456789101112131415161718class Solution {public: vector<int> trainingPlan(vector<int> &actions) { int len = actions.size(); if (len == 0 || len == 1) return actio ...
LCR 138. 有效数字
有效数字(按顺序)可以分成以下几个部分:
若干空格
一个 小数 或者 整数
(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数
若干空格
小数(按顺序)可以分成以下几个部分:
(可选)一个符号字符(’+’ 或 ‘-’)
下述格式之一:
至少一位数字,后面跟着一个点 ‘.’
至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字
一个点 ‘.’ ,后面跟着至少一位数字
整数(按顺序)可以分成以下几个部分:
(可选)一个符号字符(’+’ 或 ‘-’)
至少一位数字
部分有效数字列举如下:[“2”, “0089”, “-0.1”, “+3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e+7”, “+6e-1”, “53.5e93”, “-123.456e789”]
部分无效数字列举如下:[“abc”, “1a”, “1e”, “e3”, “99e2.5”, “–6”, “-+3”, “95a54e53”]
给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。
示例 1:
**输入:**s = “0”
**输出:**true
示例 ...
LCR 136. 删除链表的节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
示例 1:
**输入:**head = [4,5,1,9], val = 5
输出:[4,1,9]
**解释:**给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
示例 2:
**输入:**head = [4,5,1,9], val = 1
输出:[4,5,9]
**解释:**给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
说明:
题目保证链表中节点的值互不相同
若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点
正常删除
12345678910111213141516171819202122232425262728/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0 ...
LCR 135. 报数
实现一个十进制数字报数程序,请按照数字从小到大的顺序返回一个整数数列,该数列从数字 1 开始,到最大的正整数 cnt 位数字结束。
示例 1:
**输入:**cnt = 2
输出:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]
cnt特别大时会超出long long范围,要用字符串表示
第一位必须为1-9,再对后面每位进行遍历
123456789101112131415161718192021222324252627282930class Solution ...
LCR 133. 位 1 的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。
提示:
请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。
示例 1:
**输入:**n = 11 (控制台输入 00000000000000000000000000001011)
**输出:**3
**解释:**输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。
提示:
输入必须是长度为 32 的 二进制串 。
n-1可以把最右边一位的1变成0,1右边0全变成1,只需要再与n做与运算,右边的1又会变成0
这样n&(n-1)就相当于n最右边一位1变成0;
1234567891011class Solution {p ...
LCR 132. 砍竹子 II
现需要将一根长为正整数 bamboo_len 的竹子砍为若干段(至少两段),每段长度均为 正整数。请返回每段竹子长度的 最大乘积 是多少。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
**输入:**bamboo_len = 12
**输出:**81
提示:
2 <= bamboo_len <= 1000
通过数学推导(算术几何平均值不等式),将一个正数拆分成若干相等部分时,每部分越接近自然常数
1e \approx 2.718
乘积最大。在正整数中,最接近 e 的是 3,其次是 2。
使用贪心算法,由于我们要尽可能多地用 3,剩下的部分会有三种情况:
余数为 0:刚好全部分成 3,乘积为
13^{k}
余数为 1:最后剩下 3 * 1 ,这不如把一个 3 匀出来,变成 2 * 2 。乘积为 3^{k-1} * 4。
余数为 2:最后剩下一个 2,直接乘上去。乘积为 3^{k} * 2。
快速幂:
123456789101112long long qremainder(long lon ...








