首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Day28】力扣算法(超详细思路+注释)

/ 示例 1: 输入:s1 = “bank”, s2 = “kanb” 输出:true 解释:例如,交换 s2 中第一个最后一个字符可以得到 “bank” / 示例 2: 输入:s1...奇偶链表 题目描述: 给定单链表头节点 head ,将所有索引奇数节点索引偶数节点分别组合在一起,然后返回重新排序列表。...第一个节点索引被认为是 奇数 , 第二个节点索引偶数 ,以此类推。 请注意,偶数奇数组内部相对顺序应该与输入时保持一致。...题目要求我们将所有奇数节点连在一块,所有偶数节点连在一块,且奇数连链表于偶数链表拼接。 必须在 O(1) 额外空间复杂度 O(n) 时间复杂度下解决这个问题。...我们可以创建两个新链表,分别代表奇数链表 与 偶数链表,第一个节点是奇数,作为奇数链表头节点;第二个节点为偶数,作为偶数链表头节点。

41930
您找到你想要的搜索结果了吗?
是的
没有找到

进制算法题(进制转换、AliceBob爱恨情仇)

" + s; // 其他字符也行, 不是一定要 "#" // 在前面添加一个"#"字符,这是为了让字符索引从1开始,以方便处理。...(), ans.end()); // 反转字符串以得到正确顺序(如果需要的话) cout << ans << '\n'; } int main() { ios:...输入格式 第一行:两个正整数n(1≤n≤2×10^5)k(1≤k≤10^9),分别表示饼干堆数每次取出饼干底数。...输出格式 输出一行,包含一个字符串,表示AliceBob之中获胜那个人。 诈骗题。 注意到 k 为奇数,而且每次至少可以取走一个石子。...总结: 在一个奇数堆中,由于每次取不超过总数奇数个数饼干,所以我们到最后取完时候一定会取奇数次,同理可得,在一个偶数堆中则是取偶数次。

11110

627. 最长回文串

给出一个包含大小写字母字符串。求出由这些字母构成最长回文串长度是多少。 数据是大小写敏感,也就是说,"Aa" 并不会被认为是一个回文串。...这个题踩了一个大坑,先说一开始想思路啊,是这样:要够成回文串除了最中间可以是奇数个相同字母以外,两边都必须是对称,那么用map统计每个字母出现次数,然后出现偶数都可以加到回文串中...,出现奇数奇数最大那个加入回文串中,这样就可以得到需要数目了啊。...,但是还是出现了问题,一开始也想不通为什么,甚至把每个字母次数都打印出来也没有看出端倪,于是振哥交流了一下,去泡了袋面吃,然后振哥说发现为什么了,知道原因之后只能说自己陷入自己挖坑里了。...错误原因是这样,虽然说奇数个字母是不能放入回文串,但是并没有人规定说是必须把这奇数个都放进去,如果一个字母有5个的话还是可以放4个进去啊。

52720

leetcode.328奇偶链表——Javascript实现方案

这是参与「掘金日新计划 · 6 月更文挑战」第2天,点击查看活动详情 前言 今天刷了几道链表经典问题,难度有简单,也有中等,特意在此记录一下,大家分享解题过程思路 奇偶链表 描述 给定单链表头节点... head ,将所有索引奇数节点索引偶数节点分别组合在一起,然后返回重新排序列表。...第一个节点索引被认为是 奇数 , 第二个节点索引为 偶数 ,以此类推。 请注意,偶数奇数组内部相对顺序应该与输入时保持一致。...示例 输入: head = [1,2,3,4,5] 输出: [1,3,5,2,4] 输入: head = [2,1,3,5,6,4,7] 输出: [2,3,6,7,1,5,4] 解析 题目中已经说明是要区分奇数偶数节点...(偶数下一位肯定是奇数位) 同理,偶数位next指向,奇数next.(奇数下一位肯定是偶数位) 当偶数指针为空时,循环结束。

27710

蓝桥练习题总结(一)字母图形、完美的代价、01串、序列求和

输入格式 输入一行,包含两个整数nm,分别表示你要输出图形行数列数。 输出格式 输出n行,每个m个字符,为你图形。...我们可以对偏移量进行模26运算来得到正确字母。...然后,我们更新字符末尾索引t,并将匹配字符移动到其正确位置(即末尾)。 记录指针--,头指针++ 最后,我们跳出内层循环,继续外层循环下一个迭代。...// 如果ik相遇,说明中间字符没有匹配字符 if (i == k) { // 如果字符串长度为偶数,或者flag已经被设置为...): 如果字符串长度为奇数,并且这是第一次遇到单独字符,我们计算移动次数(即将剩余字符移动到字符串末尾次数),并将flag设置为true。

6510

【C语言经典例题】——程序员必须会经典基础例题(三)

推荐网站:cplusplus.com 目录 1、杨辉三角 2、有序序列合并 3、有序序列插入一个数 4、调整奇数偶数顺序 5、修改数字—偶数改为0,奇数改为1 6、猜名次 7、猜凶手 8、字符串逆序单词并打印...输出描述: 输出为一行,输出长度为n+m升序序列,即长度为n升序序列长度为m升序序列中元素重新进行升序序列排列合并。...题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字顺序使得数组中所有的奇数位于数组前半部分 所有偶数位于数组后半部分 思路:这里题目没有说要保持相对位置不变,所以我们只需要将偶数奇数分离即可...他现在得到了一个数,想把每位数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到数是多少。...AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC 思路:上个题是一样,这里把它所有旋转可能列举出来,然后用strcmp函数进行比较即可

65240

【Leetcode -328.奇偶链表 - 725.分隔链表】

Leetcode -328.奇偶链表 题目:给定单链表头节点 head ,将所有索引奇数节点索引偶数节点分别组合在一起,然后返回重新排序列表。...第一个节点索引被认为是 奇数 , 第二个节点索引偶数 ,以此类推。 请注意,偶数奇数组内部相对顺序应该与输入时保持一致。...: [2, 3, 6, 7, 1, 5, 4] 我们思路是,将一个链表分为奇数链表偶数链表两个部分,最后将奇数链表尾节点连上偶数链表头节点;开始头节点为奇数链表头节点尾节点,头节点next...为偶数链表头节点尾节点;然后依次将奇数链表尾节点连上偶数链表尾节点next,因为偶数节点next就是奇数节点;而偶数链表尾节点连上奇数链表尾节点next; 先将奇数链表偶数链表划分好,奇数链表尾节点...每部分长度应该尽可能相等:任意两部分长度差距不能超过 1 。这可能会导致有些部分为 null 。

8510

Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断

,声明两个 int 类型变量 x y,并分别赋值为 5 6。...最后,使用 System.out.println() 方法打印反转后字符串。注意事项此方法适用于任何长度字符串。此方法可以反转任何类型字符串,包括数字、字母特殊字符。...:" + area); 输出矩形面积:10解释首先,声明两个 int 类型变量 length width,分别代表矩形长度宽度。...使用 number % 2 运算符计算 number 除以 2 余数。如果余数为 0,则 number 是偶数,否则是奇数。使用 if-else 语句根据余数输出相应判断结果。...如果最低位为 0,则 number 是偶数,否则是奇数

9610

python中for循环用法-Python for循环及基础用法详解

Python 中循环语句有 2 种,分别是 while 循环 for 循环,前面章节已经对 while 做了详细讲解,本节给大家介绍 for 循环,它常用于遍历字符串、列表、元组、字典、集合等序列类型...循环遍历 “张三” 字符过程中,迭代变量 ch 先后被赋值为”张’”三’,并代入循环体中运行,只不过例子中循环体比较简单,只有一行输出代码。...例如: print(“输出10 以内所有奇数:”) for i in range(1,10,2): print(i,end=’ ‘) 运行结果为: 输出10 以内所有奇数: 1 3 5 7 9 在...一、字符反转 # 翻转字符―将”是个大好人!...1―100之间偶数 # 打印 1―100之间偶数 # 首先创建一个1―100集合,利用range函数,生成半开半闭区间,所以最后得+1。

3.1K20

【算法题解】 Day28 双指针

调整数组顺序使奇数位于偶数前面 难度:easy 输入一个整数数组,实现一个函数来调整该数组中数字顺序,使得所有奇数在数组前半部分,所有偶数在数组后半部分。...示例: 输入: nums = [1,2,3,4] 输出: [1,3,2,4] 注: [3,1,2,4] 也是正确答案之一。...交换这个偶数奇数位置,并且重复两边遍历,直到在中间相遇,nums 调整完成。  ...hello" 解释: 输入字符串可以在前面或者后面包含多余空格,但是反转后字符不能包括。...说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余空格,但是反转后字符不能包括。 如果两个单词间有多余空格,将反转后单词间空格减少到只含一个。

13620

Myers’Diff之贪婪算法

刚开始自己就有一个点没想清楚想了好几天,觉得程序员不能怕算法,书读百遍其义自现,阅读算法代码也是如此,平时多思考偶尔一点灵光出现会减少你死磕算法浪费时间。...迭代进行,所以k线上一步操作是k+1向下移动或者k-1向右移动; 计算连续d每条k线上最远到达路径(偶数d端点在偶数k线,奇数类似); 路径到达右下角结束; 其中12都是在论文中进行了证明~...for ( int k = -d ; k <= d ; k += 2 ) 看到这里也许就有人产生疑问,为什么是k+=2。 这块有一个优化,文章前面说过偶数d端点在偶数k线,奇数类似。...这里计算不是偶数偶数得到还是偶数奇数奇数得到数是奇数或者偶数(这里是计算多个+1或-1)。 无论偶数还是奇数+1或-1之后都会改变自己奇偶性,所以d次操作之后奇偶性由d奇偶进行决定。...我们使用称为V数组,其中k为索引,终点x位置为值。我们不需要存储y位置,因为我们可以根据xk来计算它:y = x-k。同样,对于给定d,k在[-d .. d]范围内。

74910

程序员进阶之算法练习(二十五)

Decoding 题目链接 题目大意: 定义一个“median letter”概念: 1、如果字符串长度为奇数,那么为中间字符; 2、如果字符串长度为偶数,那么为中间偏左字符; 现在对一个字符串...; 要求:小明所有奇数的卡片偶数的卡片一样多,并且每一张数字各不相同。...假设小明最后能达成条件,那么需要n/2张奇数偶数的卡片,即是需要各不相同奇数偶数各n/2; 即是小明小红的卡片去重后,奇数偶数数量都要大于等于n/2; 容易知道,小明需要把去重时的卡片、大于...queue里面; 输入完成时,会有一个交换queue,这个queue就是需要交换的卡片; 再按照奇偶数卡片数量,去小红交换,最后得到奇偶卡片数量,再判断。...最近做一个功能,涉及到环形缓冲区优化二进制流处理,每次处理仅有12ms时间。觉得曾经算法练习能很好帮我解决问题,过去类似的思考都转化为现在灵光。

75990

翻译 | 一行 JavaScript 代码逆向工程

最终,这个返回值被当作索引,被用于获取字符串P某个字符,因此它可以写成 P += P[index]。...例如,5二进制是 101。如果我们 1 进行与运算,将会得到如下结果: 101 AND 001 001 或者说,5是一个奇数,5 & 1 结果是 1。...为了将这个地方讲清楚,这里有一些Javascript控制台输出,0 或者 -2 意味着结果是偶数,1 则是奇数。...现在当藏青色斜线大于 2 ,小于 -2 ,或者在1-1之间且不等于时候,我们将会得到一个偶数。这也是为什么在 17 行之后我们会在一行内看到两组两组以上 p。...现在红斜线上部分在 64 左右值趋向于 2,下部分趋向于 1。这个图片将会翻转,因为现在 1^2 = 3 是奇数-输出. 而 1^1 = 0 是偶数- 输出p。

42420

Myers‘Diff之贪婪算法

刚开始自己就有一个点没想清楚想了好几天,觉得程序员不能怕算法,书读百遍其义自现,阅读算法代码也是如此,平时多思考偶尔一点灵光出现会减少你死磕算法浪费时间。...迭代进行,所以k线上一步操作是k+1向下移动或者k-1向右移动; 计算连续d每条k线上最远到达路径(偶数d端点在偶数k线,奇数类似); 路径到达右下角结束; 其中12都是在论文中进行了证明~...for ( int k = -d ; k <= d ; k += 2 ) 看到这里也许就有人产生疑问,为什么是k+=2。 这块有一个优化,文章前面说过偶数d端点在偶数k线,奇数类似。...解释:移动奇数步长(前进或者后退都行)最终位置一定在奇数k线上,偶数步长最终位置一定在偶数k线上。 PS:这里让纠结了好长时间,最后一下几点思考让更加清楚: 1....这里计算不是偶数偶数得到还是偶数奇数奇数得到数是奇数或者偶数(这里是计算多个+1或-1)。 3.

2.7K20

多线程交替打印数字—多种实现

奇数:99 偶数:100 通过加锁notify()、wait()机制可以有效实现两个线程分别打印奇数偶数,但互斥锁始终会影响性能,效率不高。...,使用volatile关键字可以保证变量可见性,但并不能保证num原子性,即多个线程操作num时,他是非线程安全,此处能够正确打印原因是因为flag标志位判断。...,当我们把断点放在奇数偶数获取许可代码段上时,会发现奇数线程先获取了许可,还没来得及执行if判断,偶数线程也获得了许可,此时程序没有任何打印。...奇数线程: 偶数线程: 此时我们采用jps命令找到当前线程pid 之后采用jstack pid命令分析当前线程堆栈信息,可以发现奇数线程偶数线程都处于WAITING状态,他们都在等待对方释放锁或传递许可...所以正确写法应该在if判断内,当打印之后便会阻塞当前线程,由于数字已经打印,再次循环时便会进入到else判断逻辑,即当前线程发现不是属于自己该打印数字就会尝试唤醒另一个线程。

52610

大厂面试系列(七):数据结构与算法等

得到这个数组全排列数组,如[2,1,3,4],•[2,1,4,3]。。。。...你这个算法时间复杂度是多少 数组A,2*n个元素,n个奇数、n个偶数,设计一个算法,使得数组奇数下标位置放置都是奇数偶数下标位置放置都是偶数 •先说下你思路 •下一个奇数?怎么找?...树B树概念、细节,比如会问mysql数据库索引实现原理,基本上就等于问你B树了。...俩线程分别持续打印奇数偶数,实现俩线程交替打印(从小到大) 给定一个经过编码字符串,返回它解码后字符串。...实现并且设计测试用例(在main函数中调用,打印结果) (考虑同号越界问题) 给一个字符一个k,要求找到不超过k个不同字符最长子串长度 10进制转16进制(紧张了,有点费时间,啧啧啧) f(0)

1.1K20

牛客网剑指offer-3

题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。...如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数平均值。...(子向量长度至少是1) 分析 本题由于有了负数影响,在求序列之和时,会产生一些麻烦,最简单思路,就是分别求出子序列并保存,最后得到最大子序列之和,为了排除负数影响,将值改为0即可。...由于路径不能重复进入矩阵格子,还需要定义字符矩阵大小一样布尔值矩阵,用来标识路径是否已经进入每个格子。...由于路径不能重复进入矩阵格子,还需要定义字符矩阵大小一样布尔值矩阵,用来标识路径是否已经进入每个格子。

91620
领券