自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

转载 Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?

Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?原创道哥IOT物联网小镇收录于话题#Linux 操作系统10#所有文章71 几个重要的段寄存器 Linux 2.6 中的线性地址区间 一个“完整”的 8086 汇编程序 前两篇文章,我们一起学习了8086处理器中关于CPU、内存的基本使用方式,重点对段寄存器和内存的寻址方式进行了介绍。可能有些小伙伴会对此不屑:现在都是多核的现代处理器,操作系统已经变得非常的强大,...

2021-07-28 09:35:15 988

转载 Linux从头学02:x86中内存【段寻址】方式的来龙去脉

原创道哥IOT物联网小镇收录于话题#Linux 操作系统10 什么是代码段? 什么是数据段? 数据的类型和长度 寻址范围 栈 实模式和保护模式 Linux 中的分段策略 饭是一口一口的吃,计算机也是一步一步的发展,例如下面这张英特尔公司的CPU型号历史:为了利用性能越来越强悍的计算机,操作系统的也是在逐步变得膨胀和复杂。为了从最底层来学习操作系统的一些基本原理,我们只有抛开操作系统的外衣,从最原始的硬件和...

2021-07-28 09:18:55 544

转载 Linux 从头学 01:CPU 是如何执行一条指令的?

越基础的知识越容易让人忽略,CPU 怎么执行指令?道哥这篇文章很好的解释了这个知识点,推荐学习关注。以下文章来源于IOT物联网小镇,作者道哥IOT物联网小镇 【Linux 从头学】是什么 古老的 Intel8086 处理器 主存储器是什么? 寄存器是什么? 三个总线 CPU 如何对内存进行寻址? 我们是如何控制 CPU 的? CPU 执行指令流程 【Linux 从头学】是什么这两年多以来,我的本职工作重心一直是在..

2021-07-28 09:02:04 363

原创 Leetcode746.使用最小花费爬楼梯(简单)动态规划 贪心 C++

题目描述:746. 使用最小花费爬楼梯数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。示例 2:输入: cost = [1,

2020-12-22 21:30:04 348

原创 Leetcode96.不同的二叉搜索树(中等)C++ 递归 动态规划

题目描述:96. 不同的二叉搜索树给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3 2/ / \ 2 1 2

2020-12-17 22:24:53 240

原创 Leetcode98.验证二叉搜索树(中等)C++ 数组 递归 迭代

题目描述:98. 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。思路描述:首先一

2020-12-17 20:20:19 290 3

原创 Leetcode45.跳跃游戏II(困难)C++ 贪心

题目描述45. 跳跃游戏 II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。思路描述// 以最小的步数得到最大的覆盖范围(即数组的最后位置)// 思路是 用局部最优得到全局最优,即当前的每一步都尽量走最大

2020-12-12 22:14:00 274

原创 Leetcode122.买卖股票的最佳时机II (简单)贪心思想 C++

题目概述:122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 =

2020-12-08 20:23:53 185

原创 leetcode55.跳跃游戏(贪心思想)多个解法 C++

Leetcode 55.跳跃游戏题目描述:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不

2020-12-08 19:43:30 292

原创 常见算法及问题需注意的技巧与简单实现

1、合并两个有序数组A,B,并使合并后的数组在A中。(假设A中有足够的空间存储两个数组中的元素)void mergeSortedArray(int A[],int m, int B[],int n){ int index = n + m;//从后向前粘贴可以避免没有判断的元素被覆盖 while(m>0 && n>0){ if(A[m-1] > B[n-1]){ A[--index] = A[--m];

2020-09-23 23:21:34 480

原创 黄迪明C语言课后习题(20复试常考小结)

第四章 数组和结构4.2 N 盏灯排成一排,从 1 到 N 依次编号。有 N 个人也从 1 到 N 依次编号。第一个 人(1 号)将灯全部打开,第二个人(2 号)将凡是 2 和 2 的倍数的灯关闭。第三个人(3 号)将凡是 3 和 3 的倍数的灯做相反处理(即将打开的灯关闭,关闭的灯打开),以后的人 都和 3 号一样,将凡是与自己编号相同的灯和是自己编号倍数的灯做相反处理,请问当第 N 个人操作之后,哪几盏灯是点亮的?试编程求解这个问题,N 由键盘输入。#include<stdio.h>

2020-09-23 23:11:04 1243

原创 动态规划问题的学习思路总结

动态规划问题的学习思路总结1、由斐波那契数列引入重叠子问题(斐波那契数列严格来说不是动态规划问题)1)暴力递归int fib(int n){ if( n ==1 || n == 2) return 1; return fib(n-1) + fib(n-2);}时间复杂度为:O(2^n)画出递归树:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fpsBQRSE-1600873191052)(C:\Users\Perry\AppD

2020-09-23 23:01:23 318

原创 C语言中比较常见的问题的汇总

C语言常见问题汇总1、在不开辟新的内存空间的情况下,如何交换a,b两个变量中的值?void swap1(int &a,int &b){a = a + b;b = a - b;a = a - b;}void swap2(int &a,int &b){a = a * b;b = a / b;a = a / b;}前两种方法是采用一种简单的加减法、乘除法算法来达到交换两个值的目的。这种方法的缺点是做加法、减法、乘法的时候可能会导致数据溢出。void

2020-09-23 22:58:31 3459

原创 贪心算法、分治算法和动态规划的区别

贪心算法、分治算法和动态规划的区别(1)分治法(divide and conquer method)将原问题划分成若干个规模较小而结构与原问题相似的子问题,递归的解决这些子问题,然后再合其结果,就得到原问题的解。特征:该问题的规模缩小到一定的程度就很容易解决该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质利用该问题分解出的子问题的解可以合并为该问题的解;该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题(2)动态规划(dynamic progra

2020-09-23 22:54:15 9263

原创 Leetcode 面试题 08.11 硬币 (中等) 动态规划(完全背包问题)

题目描述:硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=...

2020-04-30 18:30:53 336

原创 Leetcode 24. 两两交换链表中的节点(中等) 递归法与非递归法(迭代法)

题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)思路:1、迭代法整个思路是, pre,now,nex, nex->next;...

2020-04-27 21:38:23 237

原创 leetcode 234. 回文链表(简单) 快慢指针 和 栈

题目描述:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路:首先想到的是:用栈存下链表的所有结点值,然后链表头开始的遍历与栈顶元素比较,相等就出栈,继续移动比较,否则返回false(可...

2020-04-24 20:49:23 305 1

原创 Leetcode 206. 反转链表(简单) 递归法 和 迭代法

题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked...

2020-04-24 17:27:48 316

原创 Leetcode 1290. 二进制链表转整数(简单) 位运算 的应用

题目描述:给你一个单链表的引用结点head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出...

2020-04-24 16:42:18 208

原创 Leetcode 82. 删除重复的数字(中等) 双指针

题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例2:输入: 1->1->1->2->3输出: 2->3思路:用一个空指针指向链表头,然后通过 slow 和 fa...

2020-04-24 16:15:47 232

原创 Leetcode 429. N叉树的层次遍历(中等) 队列实现层次遍历 C++

题目描述:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个3叉树:返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过1000。树的节点总数不会超过5000。思路:首先用一个队列来存储每一个树结点。通过两层循环,第一层用来保证队列不空,即能够遍历所有...

2020-04-20 15:25:10 301

原创 Leetcode110. 平衡二叉树(简单)DFS 递归法

题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null...

2020-04-20 14:50:47 207

原创 Leetcode 559. N 叉树的最大深度(简单)C语言 递归法、DFS、BFS 三种解法

题目描述:给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个3叉树:我们应返回其最大深度,3。说明:树的深度不会超过1000。 树的节点总不会超过5000。思路:1、递归法/** * Definition for a Node. * struct Node { * ...

2020-04-18 11:22:37 432

原创 Leetcode 104. 二叉树的最大深度(简单) 递归思路

题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3思路:很好理解如果一棵二叉树,左子树深度为LD,右子树深度为...

2020-04-18 09:36:15 169

原创 Leetcode 101. 对称二叉树(简单)递归 和 迭代

题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代...

2020-04-16 12:07:22 307 1

原创 Leetcode 100.相同的树 (简单) 递归

题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1...

2020-04-16 11:37:13 171

原创 Leetcode 239. 滑动窗口最大值(困难)

题目描述:给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: ...

2020-04-14 23:29:32 432

原创 Leetcode 503. 下一个更大元素 II

题目描述:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大...

2020-04-14 09:53:15 293

原创 Leetcode 144. 二叉树的前序遍历(中等) 递归法和非递归法

题目描述:给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?思路:常规的递归和非递归,看代码即可。递归法/** * Definition for a binary tree node. * struct...

2020-04-11 18:04:31 224

原创 Leetcode 102. 二叉树的层序遍历(中等) 层次遍历

题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]思路:常规的层次遍历思路,建立一个队列(内存优化可以...

2020-04-10 22:44:20 217

原创 Leetcode 94. 二叉树的中序遍历(中等)递归与非递归(迭代)

题目描述:给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶:递归算法很简单,你可以通过迭代算法完成吗?思路:1、常规的中序递归法void traverse(TreeNode* root) { if(root != NULL) {...

2020-04-10 21:06:47 260

原创 Leetcode 437. 路径总和III (简单) 递归思想

题目描述:给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], su...

2020-04-10 18:09:44 187

原创 Leetcode 72. 编辑距离(困难) 动态规划

题目描述:给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')...

2020-04-09 10:12:17 222

原创 Leetcode 1405. 最长快乐字符串(中等) 贪心

题目描述:如果字符串中不含有任何 'aaa','bbb' 或 'ccc' 这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数 a,b ,c,请你返回 任意一个 满足下列全部条件的字符串 s: s 是一个尽可能长的快乐字符串。 s 中 最多 有a 个字母 'a'、b 个字母 'b'、c 个字母 'c' 。 s 中只含有 'a'、'b' 、'c' ...

2020-04-08 23:46:52 283

原创 Leetcode 1143. 最长公共子序列(中等) 动态规划

题目描述:给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。...

2020-04-08 17:39:25 301

原创 leetcode 452. 用最少数量的箭引爆气球(中等)贪心算法

题目描述:在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ ...

2020-04-08 11:36:08 220

原创 Leetcode 435. 无重叠区间(中等)贪心思想

题目描述:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: ...

2020-04-08 11:12:26 312

原创 Leetcode 42. 接雨水问题(困难)

题目描述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(Leet...

2020-04-05 23:27:43 259

原创 Leetcode 1011. 在D天内送达包裹的能力 (中等) 二分法求左边界

题目描述:传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5...

2020-04-05 12:42:41 233

原创 Leetcode 875. 爱吃香蕉的珂珂(中等) 二分法求左边界

题目描述:珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H ...

2020-04-05 11:14:42 683

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除