python 刷leetcode 题目(24)

LeetCode题解:24.两两交换链表中的节点【Python题解超详细,逐对交换、迭代法】,知识拓展:交换过程中的链表引用分析 LeetCode题解:24.两两交换链表中的节点【Python题解超详细,逐对交换、迭代法】,知识拓展:交换过程中的链表引用分析 两两交换链表中的结点:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 阅读详情

38. 报数

报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

给定一个正整数 n ,输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: "1"

示例 2:

输入: 4
输出: "1211"

这道题思路实现通过一个函数找到下一个需要报数的字串,然后append到一个list中,去这个倒数

代码如下: 

def getNext(s):
    s = list(str(s))
    temp, cnt, res = -1, 1, ""
    for num in s:
        if num == str(temp):
            cnt += 1
        else:
            if temp != -1:
                res += (str(cnt) + str(temp))
            temp, cnt = num, 1
    res += (str(cnt) + str(temp))
    # print("res", res)
    return res

class Solution:
    ans = ["1"]
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        while len(self.ans) < n:
            self.ans.append(getNext(int(self.ans[-1])))
        return self.ans[n - 1]
    

234. 回文链表

请判断一个链表是否为回文链表。

示例 1:

输入: 1->2
输出: false

示例 2:

输入: 1->2->2->1
输出: true

思路: 其中一种做法就是可以这个题转为求数字是否是回文,我们可以把链表的值放到一个list中,然后比较他们倒序是否相等,相等就是回文,否则就是。

代码:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None


class Solution(object):
    def isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        ##### the first method
#         if head is None or head.next is None:
#             return True
#         values = []
#         p = head 
#         while p.next:
#             values.append(p.val)
#             p = p.next
#         values.append(p.val)
        
#         return values == values[::-1]
        
        ##### the second method
        if head is None or head.next is None:
            return True
        if head.next.next is None:
            return head.val == head.next.val
        fast = slow = q = head
        while fast.next and fast.next.next:#这里快指针的判读条件跟判断环形有一点不同
            fast = fast.next.next
            slow = slow.next
        def reverse_list(head):
            if head is None:
                return head
            cur = head
            pre = None
            nxt = cur.next
            while nxt:
                cur.next = pre
                pre = cur
                cur = nxt
                nxt = nxt.next
            cur.next = pre
            return cur
        p = reverse_list(slow.next)
        while p.next:
            if p.val != q.val:
                return False
            p = p.next
            q = q.next
        return p.val == q.val
 互相学习,互相指教。
        
Leetcode top100题目及解答代码 (Python) 代码 代码放置在github中:https://github.com/isthegoal/leetcode_top125 使用了大量注释进行了题目 方案的解读。(类似形式如下) 题目 1 两数之和 42.20% Easy 2 两数相加 30.70% Medium 3 无重复字符的最长子串 28.00% Medium 4 寻找两个有序数组的中位数 25.60% ... 阅读详情

相关推荐

两个月搞定面试算法【小白leetcode刷题训练】【python专场】

前言 刷题顺序来自极客时间,共分为8个专题,每周1个,两个月认真刷完基本大厂面试OK(我说的是认真刷!只抄题解不算)。截止到博主结束秋招时只刷到第5个专题,也基本够用了。也就是说认真刷题的话一个月就可以有offer入手了。 当然现在BAT的笔试做起来还是觉得费力,笔试是真的难啊! 博主是python选手,题解都是python写的。有问题欢迎交流,共同进步。 文章内附leetcode链接,直接点链接去做就行。同类型的尽量整理到一起了,也方便自己今后复习。 推荐五遍刷题法 1、读题+思考,10分钟内没思路,直接

AI414010的博客 3566

LeetCode第二十四题—Python实现

title: LeetCode No.24 categories: OJ LeetCode tags: Programing LeetCode OJ LeetCode第二十四题 题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 示例 3: 输入:head = [1] 输出:[1].

StriveZs'Blog 433

链表-LeetCode24. 两两交换链表中的节点(Python)

''' 给定 1->2->3->4, 你应该返回 2->1->4->3. 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 ''' class ListNode(object): def __init__(self, x): self.val = x self.next = None class Solution(object): def swapPairs(self, head): """ :type head: ListNode

leetcode第24题python版两两交换链表中的节点

# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def swapPairs(self, head: ListNode) -> ListNode: # 思路:交换两个节点会涉及到前后相邻两个节点的变

前端帅小伙 407

Upload Symbols Failed:The archive did not include a dSYM for the LiveKitWebRTC.framework with the UU

你需要从源码构建 LiveKitWebRTC,而不是使用 CocoaPods 安装的预编译 .xcframework。Step 2: 修改 Podfile 使用本地路径引用(不是从源下载的 xcframework)方法 :强制从源码构建 LiveKitWebRTC.framework(推荐)这样它就会编译 WebRTC 并带上正确 UUID 的 dSYM。替换路径为你 clone 下来的 LiveKit 源码位置。Step 1: 克隆源码仓库。

baidu_40537062的博客 2135

NX二次开发入门必看:手把手教你搭建开发环境

想顺利开展nx二次开发,第一步就是配置好开发环境。本文详细讲解从安装准备到环境调试的完整流程,结合实际操作细节,帮你避开常见坑点,快速进入nx二次开发的实战阶段。

weixin_31569663的博客 1458

力扣python刷题day04|LeetCode24、19、160、142

建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。接下来就是交换相邻两个元素了,此时一定要画图,不画图,操作多个指针很容易乱,而且要操作的先后顺序。这道题目,不仅考察对链表的操作,而且还需要一些数学运算。

diemeng9339的博客 1681

AT32F435/437开发实战:把SD卡变成U盘的完整指南(含源码解析)

本文提供了基于AT32F435/437微控制器将SD卡改造为U盘的完整实战指南。通过深入解析USB MSC协议与SDIO驱动的协同工作原理,详细介绍了硬件设计要点、软件架构融合、核心源码解析以及从编译到文件传输的完整调试流程,帮助开发者实现可靠的大容量存储设备扩展。

weixin_29159127的博客 409

(Python)LeetCode 24:两两交换链表中的节点

题目: 思路: 这个题目其实不难,但是我还是写了好久,思路清晰但是到了写代码还是有逻辑写错了,,所以折腾了好久。 思路其实是这样的,我们需要两个指针,分别设为p1 和 p2,这里我另外新建了一个结点,后面接交换过后的结点,这样就省去了考虑头结点head可能会丢失的问题,并且head指针应该是每次会向后移动2次,也就是p2结点的后一个结点;然后就是p1和p2指针的变化了,这里有一个要注意的问题,要避免指针循环像对方(类似于循环链表),并且当p1指向p2的下一个结点的时候要注意p2后是否还有结点,没有

weixin_44260459的博客 578

手把手教你用Simulink搭建单相全桥逆变器(附单电流闭环控制仿真文件)

本文详细介绍了如何在Simulink中搭建单相全桥逆变器并实现单电流闭环控制。从功率主电路建模、核心器件参数设置,到控制系统的PI调节与前馈补偿,提供了完整的仿真步骤与调试技巧。文章旨在通过动手实践,帮助读者跨越理论与仿真的鸿沟,深入理解电力电子闭环控制的核心原理。

d6e7f8g9h的博客 316

基于cat12和SPM12进行VBM&SBM数据分析笔记1——数据预处理

基于cat12数据分析基础教程笔记 今年是小编步入研究生生活的第一年,研究方向待定,但主要以磁共振成像为主,以后会不断地总结这方面的知识,涉及MRI扫描,数据分析基础方法理论,软件操作教程,文献阅读笔记总结等等,用来记录我的研究生三年学习过程。编写尽量简洁明了,通俗易懂,本就是小白,也能体会小白的痛。不过这也要谢谢一个人手动@小白(网名),是他教我要把自己所学的写下来,讲出来才能真正的做到输入和输出,查漏补缺。而cat12软件操作是我面临的第一个数据分析的训练,写的可能也不会非常到位,还望各位专业人士指出改

Sophia2023的博客 4万+

10.24-10.28 leetcode基于python刷题

10.24-10.28 leetcode基于python刷题 20. Valid Parentheses(Easy) 3. Longest Substring Without Repeating Characters(Medium) 27. Remove Element(Easy) 16. 3Sum Closest(Medium) 58. Length of Last Word(Easy)5. Longest Palindromic Substring(Medium) 6. Zigzag Conversi

CR1820的博客 364

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(二)校园网接入层交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 1219

02-超经典Python算法刷题计划

周末03-28/29六/日周末04-04/05六/日周末04-11/12六/日。

weixin_60229630的博客 477

AMBA-CHI协议详解(十)

该规范提供了一个Request Retry(请求重试)机制,确保当请求到达一个Completer 时,它要么被接受,要么被给予一个RetryAck响应,以防止阻塞REQ通道。

Crazzy_M的博客 986

UCIE Specification详解(八)

Logical Physical Layer(逻辑物理层)

Crazzy_M的博客 1608

力扣刷题(Python)--链表总结,包含源代码--相关心得与思路(24. 两两交换链表中的节点,19. 删除链表的倒数第 N 个结点,面试题 02.07. 链表相交,142. 环形链表 II))

按照图中所给题目要求大致如图所示,我们先用虚拟头结点连接整个链表,然后用和分别记录和位置,然后将虚拟头结点连接然后连接-->,然后将当前指针()往后移两个位置即可。(1)指针遍历结束条件。当链表长度为偶数时cur.next == None 时结束当链表长度为奇数时cur.next.next == None 时结束(2)记得用temp提前记录两边相邻的节点位置(3)记得最后结果是返回虚拟头结点的next(4)下边代码要特别注意遍历判断条件的顺序,如果颠倒就会报错。

hanyu1209的博客 224

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

leetcode(力扣)刷题笔记(c++、python)【上】

力扣刷题顺序以及用不同语言解答过程

qq_43050258的博客 3698

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python版—力扣hot100

之前用C++做过力扣hot100,这次用py再做一遍,当作复习。持续更新中,一天做几道。

Leventcoco的博客 1842

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LeetCode 刷题之路(python版)

题目 1.两数之和 2.两数相加 23.合并K个排序链表 25.k个一组翻转链表 26.删除排序数组中的重复项 55.跳跃游戏 57.插入区间 60.第k个排列 61.旋转链表 70.爬楼梯 71.简化路径 75.颜色分类 80.删除排序数组中的重复项 II 82.删除排序链表中的重复元素 II 84.柱状图中最大的矩形 ...

王小坏费了很多时间整理的东西 2万+

LeetCode刷题笔记整理Python

文章目录前言一、数组1. 两数之和2. 寻找两个正序数组的中位数3. 盛最多水的容器4. 三数之和5. 打家劫舍系列打家劫舍Ⅰ打家劫舍Ⅱ打家劫舍Ⅲ6. 最大矩形和正方形最大矩形最大正方形7. 接雨水8. 不同路径9. 爬楼梯10. 和为K的子数组11. 合并两个有序数组12. 合并区间13. 最短无序连续子数组14. 最小路径15. 岛屿数量16. 任务调度器17. 每日温度18. 前 K 个高频元素19. 组合总和系列组合总和组合总和 II20. 全排列问题全排列的下一个排列写出所有的全排列 I写出所有

weixin_45517168的博客 2346

力扣(leetcode)闲来无事刷一刷

力扣(leetcode)402. 移掉K位数字 python题目思路遇到的问题代码结果结论 题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num = “1432219”, k = 3 输出: “1219” 解释: 移除掉三个数字 4, 3, 和...

chu7474的博客 310

力扣刷题_主题库(按题目顺序)_python

1. 两数之和 (1)知识点 (2)思想 通过字典用保存原数组的值和索引。 (3)结果

qq_41915623的博客 4114

leetcode刷题记第24题解法(python解析)(两两交换链表中的节点)

leetcode刷题记--> 24题解法(python解析)题目定义1. 只交换值(不能说完成)2. 递归3. 迭代实现 题目定义 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 来源:力扣(LeetCod...

qq_42274068的博客 610

LeetCode 刷题指南(一):为什么要刷题

作者:数据结构与算法原文链接:selfboot.cn/2016/07/24/leetcode_guide_why/前言虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信...

这个时代,作为程序员可能要学习小程序 1389

力扣刷题(python)50天——第四十三天:2的幂

力扣刷题(python)50天——第四十三天:2的幂 题目描述 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 = 1 示例 2: 输入: 16 输出: true 解释: 24 = 16 示例 3: 输入: 218 输出: false 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/proble...

weixin_44568780的博客 280
上一篇: python 刷 leetcode 题目(23)
下一篇: python 刷 leetcode 题目(25)
凌疯墨子
博客等级 码龄11年 47粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值