力扣hot100_链表(3)_python版本

力扣hot100_链表(3)_python版本

一、25. K 个一组翻转链表

1.1、206. 反转链表

在这里插入图片描述
  • py代码
classListNode:def__init__(self, val=0,next= node): self.val = val self.next=nextclassSolution:defreverseList(self, head): pre =None cur = head while cur:next= cur.next cur.next= pre pre = cur cur =nextreturn pre 

1.2、92. 反转链表 II

在这里插入图片描述
  • 思路:
    整体来看,1是反转前的第left个节点(p0.next),pre(4)是反转的后的头节点,cur是当前遍历到的节点下一个(5)。
classSolution:defreverseBetween(self, head, left, right): p0 = dummy = ListNode(next= head)# 这样一起实例化,p0和dummy永远都是指向同一位置for _ inrange(left-1): p0 = p0.next# 知道转换的前一个结点 pre =None cur = p0.next# 当前正在处理的节点for _ inrange(right-left+1) nxt = cur.next cur.nxt = pre pre = cur cur = nxt p0.next.next= cur p0.next= pre return dummy.next
在这里插入图片描述
  • 代码:
classSolution:defreverseKGroup(self, head, k): n =0 cur = head while cur: n +=1 cur = cur.next p0 = dummy = ListNode(next= head) pre =None cur = head # k个一组处理while n >= k: n -= k for _ inrange(k): nxt = cur.next cur.next= pre pre = cur cur = nxt nxt = p0.next nxt.next= cur p0.next= pre p0 = nxt 

二、148. 排序链表

2.1、876. 链表的中间结点

在这里插入图片描述
  • 代码:这道题典型的快慢指针
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclassSolution:defmiddleNode(self, head: Optional[ListNode])-> Optional[ListNode]: t1 = t2 = head while t2 and t2.next: t1 = t1.next t2 = t2.next.nextreturn t1 

2.2、21. 合并两个有序链表

在这里插入图片描述
  • 代码:
classSolution:defmergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode])-> Optional[ListNode]: dummy = ListNode() cur = dummy while list1 and list2:if list1.val <= list2.val: cur.next= list1 cur = cur.next list1 = list1.nextelse: cur.next= list2 cur = cur.next list2 = list2.nextif list1: cur.next= list1 else: cur.next= list2 return dummy.next
在这里插入图片描述
  • 思路1:归并排序
    找到链表的中间节点,断开为前后两端,分别排序前后两端,排序后,再合并两个有序链表。
  • 代码1:
classSolution:# 876. 链表的中间结点(快慢指针)defmiddleNode(self, head: Optional[ListNode])-> Optional[ListNode]: slow = fast = head while fast and fast.next: pre = slow # 记录 slow 的前一个节点 slow = slow.next fast = fast.next.next pre.next=None# 断开 slow 的前一个节点和 slow 的连接return slow # 21. 合并两个有序链表(双指针)defmergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode])-> Optional[ListNode]: cur = dummy = ListNode()# 用哨兵节点简化代码逻辑while list1 and list2:if list1.val < list2.val: cur.next= list1 # 把 list1 加到新链表中 list1 = list1.nextelse:# 注:相等的情况加哪个节点都是可以的 cur.next= list2 # 把 list2 加到新链表中 list2 = list2.next cur = cur.next cur.next= list1 if list1 else list2 # 拼接剩余链表return dummy.nextdefsortList(self, head: Optional[ListNode])-> Optional[ListNode]:# 如果链表为空或者只有一个节点,无需排序if head isNoneor head.nextisNone:return head # 找到中间节点 head2,并断开 head2 与其前一个节点的连接# 比如 head=[4,2,1,3],那么 middleNode 调用结束后 head=[4,2] head2=[1,3] head2 = self.middleNode(head)# 分治 head = self.sortList(head) head2 = self.sortList(head2)# 合并return self.mergeTwoLists(head, head2)

Read more

移动端也能玩转!OpenClaw iOS/Android 端部署教程,语音唤醒 + 全场景随身 AI 助手

移动端也能玩转!OpenClaw iOS/Android 端部署教程,语音唤醒 + 全场景随身 AI 助手

一、背景与价值:随身AI助手的刚需场景 随着大语言模型技术的普及,全场景AI助手的需求日益增长——无论是通勤途中的语音笔记、户外场景的实时翻译,还是离线环境下的知识查询,移动端随身AI都能解决传统桌面AI的场景局限。OpenClaw作为一款轻量级、可离线运行的开源AI框架,支持语音唤醒、多模态交互等核心功能,完美适配iOS/Android双平台部署,为用户打造真正的随身AI助手。 二、核心原理:OpenClaw移动端部署的技术逻辑 OpenClaw的移动端部署核心是将轻量化大语言模型(如Qwen-2-0.5B-Instruct)、语音唤醒模型(如PicoVoice Porcupine)与移动端推理引擎(如MLKit、TensorFlow Lite)进行整合,实现三大核心流程: 1. 低功耗语音唤醒:通过本地运行的轻量唤醒模型监听关键词,避免持续调用麦克风导致的高功耗; 2. 本地推理加速:利用移动端硬件加速(NNAPI、Core ML)运行量化后的大语言模型,实现离线交互; 3. 跨平台适配:通过Flutter或React Native统一代码底座,同时适配iOS的沙箱

By Ne0inhk

Trae IDE 安装与使用保姆级教程:字节跳动的 AI 编程神器

一、Trae 是什么? Trae(发音 /treɪ/)是字节跳动推出的 AI 原生集成开发环境(AI IDE),于 2025 年 1 月正式发布。与传统的 IDE + AI 插件组合不同,Trae 从底层架构上就将 AI 能力深度集成,实现了真正意义上的"AI 主导开发"。 核心定位 Trae 以 “自主智能体(Agent)” 为核心定位,彻底重构了传统开发流程: * Chat 模式:智能代码补全、问答、解释和优化 * Builder 模式:自然语言一键生成完整项目框架 * SOLO 模式:AI 自主规划并执行开发任务 版本划分 版本定位核心特色适用人群Trae

By Ne0inhk
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS滚动卡片组件,scroll-view无法滚动踩坑全记录

uni-app x跨平台开发实战:开发鸿蒙HarmonyOS滚动卡片组件,scroll-view无法滚动踩坑全记录

在玩中学,直接上手实战是猫哥一贯的自学方法心得。假期期间实在无聊!我不睡懒觉、不看电影、也不刷手机、不玩游戏、也无处可去。那么我干嘛嘞?闲的都想看蚂蚁上树,无聊透顶,百无聊赖,感觉假期好没意思啊。做什么呢? 于是翻出来之前做过的“爱影家”影视app项目,找个跨多端的技术栈再玩一把。本节实战是scroll-view无法滚动踩坑全记录。 本节实战是scroll-view无法滚动踩坑全记录。本以为scroll-view用法挺简单的,参考官方文档用呗。结果想实现个HarmonyOS滚动卡片组件,起初死活无法横向滚动。最终找到了原因和解决办法,特此总结分享下,有用到的小伙伴可以点击收藏。 该免费观影APP,使用uni-app x框架开发跨六端的免费观影app。 项目开源地址:https://gitcode.com/qq8864/uniappx_imovie 下图是实现的热门影视和即将上映等横向滚动卡片组件运行效果。 项目背景 本文基于爱影家(imovie)项目的 uni-app x框架重构实现,介绍在 uni-app x 中封装横向滚动卡片组件时遇到的核心问题及解决办法。(爱影家(

By Ne0inhk
Flutter for OpenHarmony:Flutter 鸿蒙三方库适配之 units_converter —— 跨维度物理单位换算与科学计算引擎

Flutter for OpenHarmony:Flutter 鸿蒙三方库适配之 units_converter —— 跨维度物理单位换算与科学计算引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在开发出海电商、医疗分析或气象监测类 OpenHarmony 应用时,复杂的物理单位换算(如公斤转磅、摄氏度转华氏度)是常见需求。手动计算不仅繁琐,还容易产生精度误差。 units_converter 是一个强大的 Flutter 工具库,内置了详尽的物理量字典。在 OpenHarmony 平台上,它能提供高精度的换算支持,大幅降低金融和科学计算类应用的开发门槛。 一、原理解析 1.1 核心逻辑 units_converter 将物理量抽象为矩阵权重。通过预定义的单位字典,实现跨维度转换。 输入物理数值 调用 units_converter 解析物理量字典 矩阵权重运算 输出高精度结果 1.2 进阶特性 * 矩阵转换:支持 1:

By Ne0inhk