LeetCode刷题系列
文章平均质量分 88
求职ing。。。刷题记录ing。。。
路途…
Reading is a long investment.During this process, find the entertainment and enjoy life while treasure the present to compound interest.
展开
-
【数据结构】跳表
SkipList(跳表)这种数据结构是由William Pugh于1990年在在 Communications of the ACM June 1990, 33(6) 668-676 发表了Skip lists: a probabilistic alternative to balanced trees。原创 2022-08-10 23:22:50 · 282 阅读 · 0 评论 -
【面经】数据库零碎系列
内存中,虽然 说存取速度快,但是会导致数据不能永久的保存文件中,可以解决数据永久保存的问题,速度比内存操作慢,频繁的 IO 操作,而且查询数据不方便数据库中,数据可以永久保存,通过使用 SQL 语句,使得查询方便效率高,并且管理数据方便第一层是服务器层,主要提供连接处理、授权认证、安全等功能。第二层实现了 MySQL 核心服务功能,包括查询解析、分析、优化、缓存以及日期和时间等所有内置函数,所有跨存储引擎的功能都在这一层实现,例如存储过程、触发器、视图等。第三层是存储引擎层,存储引擎负..原创 2022-04-01 23:06:11 · 1015 阅读 · 0 评论 -
【面经】操作系统零碎系列
操作系统(operating system,简称 OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 – 百度百科 – 思维导图.1. 进程切换的流程从 A 进程切换到 B 进程:先从用户态切换到内核态,操作系统需要先挂起正在占用 CPU 的 A 进程,才能切换到 B 进程从用户态切换到内核态:通过硬中断来实现,从用户态切换到内核.原创 2022-03-23 15:28:41 · 497 阅读 · 0 评论 -
【面经】Linux零碎系列
Linux,全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯・本纳第克特・托瓦兹于 1991 年 10 月 5 日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 有上百种不同的发行版,如.原创 2022-03-23 15:26:05 · 1723 阅读 · 0 评论 -
【Leetcode】哈希表系列
1. 有效数字异或 242给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。public boolean isAnagram(String s, String t) { if(s.length() != t.length()) return false; int[] alpha = new int[26]; //如果长度很多该怎么解决 for(int i原创 2022-03-18 23:12:28 · 374 阅读 · 0 评论 -
【面经】Shell系列
From: https://liudongdong1.github.io/2020/08/13/yu-yan-kuang-jia/shell/shelllearning/1. 基本语法基本脚本:#!/bin/bashecho "Hello World !"# 注释内容chmod +x ./test.sh #使脚本具有执行权限./test.sh #执行脚本定义使用变量your_name="qinjx" # 定义变量for file in `ls /etc` # 定义变量原创 2022-03-18 09:57:32 · 486 阅读 · 0 评论 -
【LeetCode】区间问题系列
title: 区间问题date: 2022-02-28 22:31:56author: liudongdong1img: https://cdn.pixabay.com/photo/2022/02/19/07/17/tree-blossoms-7022041__340.jpgreprintPolicy: cc_bycover: falsecategories: 语言框架tags:java1. 区间合并问题 56给出一堆区间,要求合并所有有交集的区间 (端点处相交也算有交集)。最后.原创 2022-03-11 22:14:06 · 487 阅读 · 0 评论 -
【LeetCode】排序算法系列
非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破 O (nlogn),因此称为非线性时间比较类排序。 url 解释线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。1. 冒泡排序public static void bubbleSort1(int [] a, int n){ int i, j; for(i=0; i<n; i++){//表示n次排序过程。.原创 2022-03-11 22:10:41 · 211 阅读 · 0 评论 -
【LeetCode】贪心算法系列
将问题分解为若干个子问题找出适合的贪心策略(常识性推导加上举反例)求解每一个子问题的最优解将局部最优解堆叠成全局最优解1. 分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最..原创 2022-03-11 22:09:55 · 992 阅读 · 0 评论 -
【面经】HashMap 解析
HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value都可以为null。此外,HashMap 中的映射不是有序的。JDK1.8 之前 HashMap 由 数组 + 链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突 **(两个对象调用的 hashCode 方法计算的哈希码值一致导致计算的数组索引值相同)** 而存在的(“拉链法” 解决冲突)..原创 2022-03-11 22:08:30 · 1414 阅读 · 0 评论 -
【LeetCode】前缀和系列
1.除自身以外数组的乘积给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums 之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请**不要使用除法,**且在 O(*n*) 时间复杂度内完成此题。public int[] productExceptSelf(int[] nums) { int length = nums.length; int[] a原创 2022-03-11 22:06:38 · 380 阅读 · 0 评论 -
【LeetCode】查找算法系列
1.数据流中的第 K 大元素设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。请实现 KthLargest 类:KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。//堆的元素个数为常量 k,新加入一个元素和堆顶比较class KthLargest { Priorit原创 2022-03-11 22:05:30 · 207 阅读 · 0 评论 -
【LeetCode】回溯算法系列
组合问题:N 个数里面按一定规则找出 k 个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个 N 个数的集合里有多少符合条件的子集排列问题:N 个数按一定规则全排列,有几种排列方式棋盘问题:N 皇后,解数独等等所有回溯法的问题都可以抽象为树形结构,回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。** 画递归树:** 画出递归树,找到状态变量(回溯递归函数的参数)找判断条件:判断此时的路径是否可以作为结果。** 找选..原创 2022-03-11 22:04:43 · 1228 阅读 · 0 评论 -
【LeetCode】位运算系列
1. 数组中重复的数据 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。public List<Integer> findDuplicates(int[] nums) { List<Integer> res = new ArrayList<>(原创 2022-03-11 22:03:46 · 292 阅读 · 0 评论 -
【面经】C/C++零散笔记
.1. 构造函数和析构函数C++ 中构造函数和析构函数只会在编译阶段运行一次,无论你定义了多少不同的构造函数,在一般情况下只会让编译器选择其中一个进行执行,且不会调用构造函数内部其他的构造函数。(1)创建类类型的新对象,系统会自动调用构造函数(2)构造函数是为了保证对象的每个数据成员都被初始化B: 没有返回类型 C: 没有参数 D: 析构函数不能被重载 E: 如果没有定义析构函数,编译器将会自动生成一个默认析构函数.2. 动态链接和静态链接区别静态链接:编译时直接将需要执行代码拷贝到调原创 2022-03-09 07:44:37 · 820 阅读 · 0 评论 -
【面经】JVM零散整理
From: JVM 系列阅读笔记:https://liudongdong1.github.io/tags/jvm/.1. 简述垃圾回收机制在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫描那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。若 GC 一次之后仍不能满足内存分配的要求,JVM 会再进行两次 GC 作进一步的尝试,若仍无法满足要求,则 JVM 将报 “out of memory” 的错误,J原创 2022-03-09 07:41:06 · 408 阅读 · 0 评论 -
【leetcode】链表系列
0. 解题策略注意合理的使用 当前节点,上一个节点,以及下一个节点.1. 哑节点哑结点是指数据域为空,指针域指向链表头节点的节点,它是为了简化边界条件而引入的。.2. 双指针法求解链表有环问题时,我们申请两个指针,以一快一慢的速度在链表上行走,等他们相遇时,就可以知道链表是否有环;求链表的倒数 k 个节点时,申请两个指针,一个指针先走 k 步,然后两个指针再同时向后移动,当先走的那个指针走到链表的末尾时,另一个指针恰好指向了倒数第 k 个节点。1. 设计链表设计链表的实现原创 2022-03-07 23:59:58 · 143 阅读 · 0 评论 -
【leetcode】单调栈系列
一、 单调栈一般有以下四种作用(以单调递增栈为例):确定离当前元素最近的更小元素的位置由 1,递增栈可确定以当前元素为最小值的子数组的左右边界由 1,假设 f [i] 表示离当前元素最近的左边的更小元素,那么不断调用 i=f [i] 可以找到数组的最小值;f [i] 也可以帮助确定数组任意子数组的最小值找到数组中第一个右侧存在比它小的元素的元素位置1. 坡长度问题public int maxWidthRamp(int[] A) { int n = A.length; in.原创 2022-03-06 20:57:47 · 391 阅读 · 0 评论 -
【LeetCode】树系列
From: https://liudongdong1.github.io/Learning from:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E6%80%BB%E7%BB%93%E7%AF%87.html#%E6%9C%80%E5%90%8E%E6%80%BB%E7%BB%931. 前序遍历先遍历父节点,再遍历左子树,最后遍历右子树public static void PreOrderRecur(TreeNode roo原创 2022-03-11 21:58:47 · 262 阅读 · 0 评论