![](https://img-blog.csdnimg.cn/20210826163613272.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
# 算法
孙中明
这个作者很懒,什么都没留下…
展开
-
SQL156 各个视频的平均完播率
视频2001在2021年10月有3次播放记录,观看时长分别为30秒、24秒、34秒,视频时长30秒,因此有两次是被认为完成播放了的,故完播率为0.667;原创 2024-04-21 21:24:56 · 787 阅读 · 0 评论 -
JZ18 删除链表的节点
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * .原创 2022-12-07 21:00:00 · 487 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
题目 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子? 示例 1: 输入:m = 2, n = 3, k = 1 输出:3 示例 2: 输入:m =原创 2021-11-24 10:32:40 · 633 阅读 · 15 评论 -
剑指 Offer 09. 用两个栈实现队列
题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","deleteHead","deleteHead"] [[],[3],[],[]] 输出:[null,null,3,-1] 示例 2: 输入: ["CQueue","deleteHead","app原创 2021-10-26 14:51:41 · 624 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000 答案 /** * Definition for a binary tree原创 2021-10-24 09:00:00 · 593 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 我的答案 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } *原创 2021-10-22 08:55:19 · 615 阅读 · 3 评论 -
剑指 Offer 05. 替换空格
题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 我的答案 class Solution { public String replaceSpace(String s) { StringBuffer str =new StringBuffer(); //System.out.println(s.charAt(0)); //S原创 2021-10-19 19:19:22 · 608 阅读 · 4 评论 -
剑指 Offer 04. 二维数组中的查找
题目 剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30原创 2021-10-18 08:48:04 · 695 阅读 · 22 评论 -
剑指 Offer 03. 数组中重复的数字
题目 剑指 Offer 03. 数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 我的答案 class Solution { public int findRepeatNumber(int[] nums) {原创 2021-10-16 10:30:47 · 734 阅读 · 16 评论 -
LeetCode每日打卡-61. 旋转链表
61. 旋转链表 难度中等615 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示: 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100 0 <= k <= 2 * 109 /** * Definition f原创 2021-09-16 11:08:12 · 607 阅读 · 2 评论 -
LeetCode每日打卡-19. 删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点 难度中等1525 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 **进阶:**你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.原创 2021-09-01 11:04:17 · 601 阅读 · 0 评论 -
LeetCode每日打卡-2. 两数相加
2. 两数相加 难度中等6636 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9原创 2021-09-01 11:02:14 · 741 阅读 · 0 评论 -
LeetCode每日打卡-316. 去除重复字母
给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s = "bcabc" 输出:"abc" 示例 2: 输入:s = "cbacdcbc" 输出:"acdb" 提示: 1 <= s.length <= 104 s 由小写英文字母组成 思路 要删除已重复的字符,可以在第一次遍历时查询是否重复,而在生成处理后的字符时,需要能快速找到该字符第一次出现的位置,那么可以在第一次遍历时维护一个Ha原创 2021-08-28 11:19:10 · 685 阅读 · 0 评论 -
LeetCode每日打卡-581. 最短无序连续子数组
581. 最短无序连续子数组 难度中等693 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入:nums = [2,6,4,8,10,9,15] 输出:5 解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。 示例 2: 输入:nums = [1,2,3,4] 输出:0 示例 3: 输入:nums = [1] 输出:0原创 2021-08-27 18:00:25 · 608 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5,1,2] 输出:1 示例 2: 输入:[2,2,2,0,1] 输出:0 class Solution { public int minArray(int[] numbers) { int len=numbers.length;原创 2021-08-27 15:28:20 · 582 阅读 · 0 评论 -
LeetCode每日打卡-61. 旋转链表
61. 旋转链表 难度中等615 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示: 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100 0 <= k <= 2 * 109 /** * Definition f原创 2021-08-27 11:03:04 · 618 阅读 · 0 评论 -
LeetCode每日打卡-387. 字符串中的第一个唯一字符
387. 字符串中的第一个唯一字符 难度简单429收藏分享切换为英文接收动态反馈 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 示例: s = "leetcode" 返回 0 s = "loveleetcode" 返回 2 **提示:**你可以假定该字符串只包含小写字母。 import java.util.*; class Solution { public int firstUniqChar(String s) { char[] ch原创 2021-08-26 20:57:12 · 636 阅读 · 0 评论 -
LeetCode每日打卡-1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6原创 2021-08-26 20:56:15 · 682 阅读 · 0 评论 -
【算法刷题目录~】先不刷了 先刷剑指offer去了
LeetCode题目分类与面试问题整理 English edition 题目分类 Hash相关 q1_两数之和 q387_字符串中的第一个唯一字符 链表操作 q2_两数相加 q19_删除链表的倒数第N个节点 q25_k个一组翻转链表 q61_旋转链表 q138_复制带随机指针的链表 q206_反转链表 双指针遍历/滑动窗口 q3_无重复字符的最长子串 q11_盛最多水的容器 q15_三数之和 q16_最接近的三数之和 q26_删除排序数组中的重复项 q42_接雨水 q121_买卖股票的最佳时机原创 2021-08-25 17:32:12 · 788 阅读 · 10 评论 -
快速排序(C和Java)
快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,也是一种排序算法。最早由东尼·霍尔提出。在平均状况下,排序 n 个项目要 O(nlogn) 次比较。在最坏状况下则需要 O(n^2) 次比较,但这种状况并不常见。事实上,快速排序 O(nlogn) 通常明显比其他算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地达成。 从数列中挑出一个元素,称为“基准”(pivot), 重新排序数列,所有比基准值小原创 2021-05-12 10:29:37 · 653 阅读 · 0 评论 -
八大算法总结
文章目录算法稳定性插入排序直接插入排序折半插入排序希尔排序交换排序冒泡排序快速排序选择类排序简单选择排序堆排序归并排序基数排序外部排序 算法 稳定性 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序、基数排序是稳定的排序算法 插入排序 有一个已经 有序 的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、原创 2021-04-23 14:09:54 · 1487 阅读 · 0 评论 -
自制操作系统——第一周
文章目录第一周第一天-从计算机结构到汇编程序入门HelloWorld引入汇编添加注释第二天-汇编语言学习与Makefile入门文本编辑器初识汇编寄存器数据大小指令制作启动区第三天-进入32位模式并导入C语言制作IPL磁盘显示导入c语言实现HLT第四天-C语言与画面显示白屏线条屏RGB屏幕桌面雏形第5天:结构体、文字显示与GDT/IDT初始化接受启动信息试用结构体显示字符显示字符串显示变量显示指针第六天-分割编译和中断处理分割源文件第七天-FIFO鼠标控制鼠标解读加快中断制作FIFO缓冲区 第一周 我感觉肯定原创 2021-01-29 20:44:22 · 1238 阅读 · 0 评论