算法练习|Leetcode189轮转数组 ,Leetcode56合并区间,Leetcode21合并两个有序链表,Leetcode2两数相加,sql总结

目录

  • 一、Leetcode189轮转数组
    • 题目描述
    • 解题思路
    • 方法:切片
    • 总结
  • 二、Leetcode56合并区间
    • 题目描述
    • 解题思路
    • 方法:
    • 总结
  • 三、Leetcode21合并两个有序链表
    • 题目描述
    • 解题思路
    • 方法:
    • 总结
  • 四、Leetcode2两数相加
    • 题目描述
    • 解题思路
    • 方法:
    • 总结
  • sql总结:

一、Leetcode189轮转数组

题目描述

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

在这里插入图片描述

题目链接:力扣题目链接

解题思路

  • 切片思想

方法:切片

  • 因为轮转后切片内顺序不变
  • 将区间调转位置[-k:],[:-k]
  • !!!当k大于数组长度的时候,要取余
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        # 当k大于数组长度时
        k = k % len(nums)

        n1 = nums[-k:]
        n2 = nums[: -k]

        nums[:] = n1 + n2
        

总结

  • 切片思想非常好用
  • 轮转的时候注意k的大小
  • 注意语法[ : ] = [ :-k] + [-k: ]


二、Leetcode56合并区间

题目描述

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

在这里插入图片描述

题目链接:力扣题目链接

解题思路

  • 合并区间,比较上一个区间的右区间和下一个区间的左区间

方法:

  • 先排序
  • 判断加入区间/更新区间的条件
  • 加入区间:
    merge为空,上一个区间的右区间小于下一个区间的左区间[1,3],[4,5]
  • 更新区间:
    上一个区间的右区间大于下一个区间的左区间
    !!!更新右区间=这两个区间右区间的最大值
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        # 根据每个区间的左区间进行排序
        intervals.sort(key = lambda x: x[0])

        merge = []
        for i in intervals:
            if not merge or merge[-1][1] < i[0]:
                merge.append(i)
            else:
                merge[-1][1] = max(merge[-1][1], i[1])

        return merge

总结

  • 二维数组排序
    s.sort(key = lambda x: x[0])
  • 多列几个例子就知道合并的逻辑了


三、Leetcode21合并两个有序链表

题目描述

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

在这里插入图片描述
在这里插入图片描述

题目链接:力扣题目链接

解题思路

  • 比合并区间简单,链表合并只用比大小
  • 小的加入,剩的加入

方法:

  • 新建一个空节点dummy,用merge遍历,最终返回dummy.next
  • 当两个链表节点都存在时,哪个小就连上哪个
  • 当只剩一个链表时,将剩下的链表之间连过来
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        dummy = ListNode()
        merge = dummy

        cur1 = list1
        cur2 = list2
        while cur1 and cur2:
            if cur1.val <= cur2.val:
                merge.next = cur1
                cur1 = cur1.next
            else:
                merge.next = cur2
                cur2 = cur2.next
            merge = merge.next

        # 剩余节点直接连过来
        if cur1:
            merge.next = cur1
        else:
            merge.next = cur2

        return dummy.next

总结

  • 剩余链表可以通过节点之间连过来
    if cur1:
    merge.next = cur1


四、Leetcode2两数相加

题目描述

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

在这里插入图片描述

题目链接:力扣题目链接

解题思路

  • 注意存储进位的值

方法:

  • while循环只要有一个链表没走完就继续走,走完的为0
  • 注意最后如果还有进位,要用merge.next存完!!!
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        cur1 = l1
        cur2 = l2

        dummy = ListNode()
        merge = dummy
        pre = 0
        while cur1 or cur2:
            val1 = cur1.val if cur1 else 0
            val2 = cur2.val if cur2 else 0
            total = val1 + val2 + pre
            # 处理进位
            pre = total // 10
            merge.next = ListNode(total % 10)
            merge = merge.next
            # 移动到下一个节点
            if cur1:
                cur1 = cur1.next
            if cur2:
                cur2 = cur2.next

        if pre:
            merge.next = ListNode(pre)

        return dummy.next
        

总结

  • 新建链表都是:
    dummy = ListNode()
    merge = dummy
    用merge.next继续走,最终返回dummy.next

  • 进位值等于pre // 10

  • 注意最终剩下的进位也要用merge.next存!!!



sql总结:

  • sql中 值的比较用=
    where id % 2 = 1

  • 日期范围用between…and…
    activity_date between “2019-06-28” and “2019-07-27”



心得:就算是春招也要坚持刷算法~!!缓解焦虑就刷力扣!!虽然刷的慢,但希望刷过的算法都会用!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/561299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】写实转漫画——CycleGAN原理解析

1、前言 上一篇&#xff0c;我们讲解了按照指定文本标签生成对应图像的CGAN。本篇文章&#xff0c;我们讲CycleGAN。这个模型可以对图像风格进行转化&#xff0c;并且训练还是在非配对的训练集上面进行的&#xff0c;实用性挺大 原论文&#xff1a;Unpaired Image-to-Image T…

黑马鸿蒙学习5:LIST容器

LIST容器&#xff0c;其实就是如果FOREACH容器展示不全的话&#xff0c;会自动有滚动条了。要注意的是&#xff0c;LIST中必须有固定的listitem这个项&#xff0c;而且列表里面只能包含一个根组件。 必须把ROW容器放到listitem中&#xff0c;如下&#xff1a;

数学建模--非线性规划模型+MATLAB代码保姆式解析

目录 1.简单介绍 2.求解方法 3.适用赛题 4.典型例题及相关分析 &#xff08;1&#xff09;问题引入 &#xff08;2&#xff09;决策变量&约束条件 &#xff08;3&#xff09;确定目标函数 &#xff08;4&#xff09;建立数学模型 5.MATLAB代码祝逐字句讲解 1.简单…

(四)SQL面试题(连续登录、近N日留存)学习简要笔记 #CDA学习打卡

目录 一. 连续登录N天的用户数量 1&#xff09;举例题目 2&#xff09;分析思路 3&#xff09;解题步骤 &#xff08;a&#xff09;Step1&#xff1a;选择12月的记录&#xff0c;并根据用户ID和登录日期先去重 &#xff08;b&#xff09;Step2&#xff1a;创建辅助列a_rk…

stl_set

文章目录 set1.关联式容器2.键值对3. set3.1 set介绍3.2 set的使用3.2.1 pair3.2.2 find3.2.3 lower_bound 3.3 multiset3.3.1 multiset的介绍3.3.2 multiset的使用3.3.3 find3.3.4 equal_range3.3.5 erase set 1.关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分…

Zynq 7000 系列中的JTAG和DAP子系统

Zynq 7000系列SoC器件通过标准JTAG调试接口提供调试访问。在内部&#xff0c;SoC设备器件在处理系统&#xff08;PS&#xff09;内部实现了一个Arm调试访问端口&#xff08;DAP&#xff09;&#xff0c;同时在可编程逻辑&#xff08;PL&#xff09;内部实现了一个标准的JTAG测试…

中国人为什么不说自信,而说信天

中国人从来不说自信&#xff0c;中国人信天&#xff0c;老天爷是最公平的。做好自己&#xff0c;天命注定&#xff0c;我都这么努力了&#xff0c;老天爷不帮我帮谁&#xff1f; 中国人信天是有逻辑关系的&#xff0c;很简单&#xff1a;做错事情了或者结果不好了&#xff0c;…

LeetCode - 283.移动零

题目链接&#xff1a; LeetCode - 283.移动零 题目分析&#xff1a; ​​​​​ 题解代码&#xff1a; #include<iostream> #include<vector> using namespace std;class Solution { public:void moveZeroes(vector<int>& nums) {for (int cur 0, des…

Kafka入门介绍+集群部署+简单使用

Kafka入门介绍集群部署简单使用 简介核心概念Broker&#xff08;服务节点/实例&#xff09;Producer&#xff08;生产者&#xff09;Topic&#xff08;主题&#xff09;Partition&#xff08;分区&#xff09;Consumer&#xff08;消费者&#xff09;和Consumer Group&#xff…

volatility内存取证

记录一道volatility内存取证的题目&#xff0c;第一次遇到&#xff0c;现场把环境搞出来&#xff0c;现记录一些操作指令。 一、安装volatility3 1、新建一个kali虚拟机 新建的过程不再赘述。 2、下载volatility3 GitHub - volatilityfoundation/volatility3: Volatility …

21.组件组成

组件组成 组件最大的优势就是可复用性 当使用构建步骤时&#xff0c;我们一般会将 Vue 组件定义在一个单独的 .vue 文件中&#xff0c;这被叫做单文件组件(简称 SFC) 组件组成结构 <template><div>承载标签</div> </template> <script> expor…

政安晨:【Keras机器学习示例演绎】(六)—— 通过 CT 扫描进行 3D 图像分类

目录 简介 设置 下载 MosMedData&#xff1a;胸部CT扫描与COVID-19相关发现 加载数据和预处理 建立训练和验证数据集 数据增强 定义 3D 卷积神经网络 训练模型 模型性能可视化 通过一次 CT 扫描进行预测 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍…

图像处理的魔法师:Pillow 库探秘

文章目录 图像处理的魔法师&#xff1a;Pillow 库探秘第一部分&#xff1a;背景介绍第二部分&#xff1a;库是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;库函数使用方法第五部分&#xff1a;场景应用第六部分&#xff1a;常见Bug及解…

黑马---苍穹外卖总结上

1.功能模块 1.1 管理端功能 员工登录/退出 , 员工信息管理 , 分类管理 , 菜品管理 , 套餐管理 , 菜品口味管理 , 订单管理 &#xff0c;数据统计&#xff0c;来单提醒。 模块描述登录/退出内部员工必须登录后,才可以访问系统管理后台员工管理管理员可以在系统后台对员工信息进…

layui框架实战案例(27):弹出二次验证

HTML容器 <button class"layui-btn layui-btn-sm layui-btn-danger" lay-event"delete"><i class"layui-icon layui-icon-delete"></i>批量删除</button>删除封装函数 function delAll(school_id, school_name) {var lo…

Java 笔记 03:Java 基础知识,使用 IDEA 创建 Java 项目、设置注释颜色,以及自动生成 JavaDoc

一、前言 记录时间 [2024-04-21] 系列文章简摘&#xff1a; Java 笔记 01&#xff1a;Java 概述&#xff0c;MarkDown 常用语法整理 Java 笔记 02&#xff1a;Java 开发环境的搭建&#xff0c;IDEA / Notepad / JDK 安装及环境配置&#xff0c;编写第一个 Java 程序 本文讲述了…

图论学习总结

目录 图论学习总结前言一、基础知识图的存储图的遍历 二、最短路多源最短路 F l o y d Floyd Floyd​ 算法例题及变形 e g 1 &#xff1a; S o r t i n g I t A l l O u t eg1&#xff1a;Sorting\ It\ All\ Out eg1&#xff1a;Sorting It All Out ( 蓝书例题&#xff0c;传递…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(2)——架构分析 - 核心思想环境搭建技术选型

4.架构分析 4.1.核心思想 超越一阶提示&#xff0c;通过增加静态知识库和信息检索方案或简单的总结方案来扩展语言模型。 将这些想法扩展到构建一个代理架构&#xff0c;该架构处理检索&#xff0c;其中过去的经验在每个时步动态更新&#xff0c;并混合与npc当前上下文和计划…

计算机视觉——OpenCV Python位运算与图像掩码

概述 位运算与图像掩码的结合允许对图像的特定区域进行精确的操作。通过使用位运算&#xff08;如AND、OR、XOR和NOT&#xff09;&#xff0c;可以基于掩码的选择性地修改图像数据。位运算与图像掩码结合使用的一些关键点和应用场景&#xff1a; 选择性修改&#xff1a; 通过位…

李宏毅2022机器学习/深度学习 个人笔记(1)

本系列用于推导、记录该系列视频中本人不熟悉、或认为有价值的知识点 本篇记录第一讲&#xff08;选修&#xff09;&#xff1a;神奇宝贝分类 如图&#xff0c;为了估算某个样本属于某类的概率&#xff0c;在二分类问题中&#xff0c;我们需要计算红框所示的4个参数&#xff0…