自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (10)
  • 收藏
  • 关注

原创 浅谈 子集 II 问题

子集 II问题:给你一个整数数组 nums ,其中 可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。思路:参考 子集 问题在递归时,若发现没有选择上一个数,且当前数字与上一个数相同,则可以跳过当前生成的子集。class Solution {public: vector<int> t; vector<vector<int>> ans; void

2021-03-31 22:53:54 86

原创 浅谈 子集 问题

子集问题:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。思路:采用递归回溯的方法,借助临时数组进行回溯。class Solution {public: vector<int> t; vector<vector<int>> ans; void dfs(int cur, vector<int>& nums

2021-03-31 22:49:02 166

原创 虚拟机(VMware)安装 Linux 系统(以 RHEL7 为例讲解详细过程,安装其他镜像文件步骤类似)

文章导航一、安装准备二、安装虚拟机一、安装准备安装 VMware下载完成后执行可执行文件,点击下一步。同意条款并下一步。选择安装位置和勾选第二个再点击下一步。这两个可以不用勾选,自主选择。下一步。下一步。安装。由于电脑下有以前其他版本。故暂不继续演示图片。然后 下载 RHEL7提取码:rhel二、安装虚拟机点击创建新的虚拟机。选择典型,再下一步。选择稍后安装虚拟机,下一步。

2021-03-31 15:41:55 487 1

原创 浅谈 搜索二维矩阵 问题

搜索二维矩阵问题:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。思路:先进行搜索,再进行列搜索。由于二维数组元素升序排列,所以都采用从后往前搜索,比较方便确定 target 所在行可以采用二分查找的方法使时间复杂度从 mn 降到 log(mn) 。class Solution {public: bool searchMatrix(vector&lt

2021-03-30 11:53:43 365

原创 浅谈 颠倒二进制位 问题

颠倒二进制位颠倒给定的 32 位无符号整数 的二进制位。思路:从最低位遍历 n,并将 n 右移一位。将 n 的最低位依次变为最高,第二高位,……直到 n 变为 0 则结束。返回倒叙。class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t res = 0; auto i = 0; while(n) { res |= (n &

2021-03-29 16:34:15 209

原创 浅谈 二叉搜索树迭代器 问题

二叉搜索树迭代器实现一个二叉搜索树迭代器类 BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator (TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回 false 。int next()将指针向右移动,

2021-03-28 15:06:36 155

原创 浅谈 二叉树中序遍历 问题

二叉树中序遍历给定一个二叉树的根节点 root ,返回它的 中序 遍历。思路:采用自然的递归方式是最简洁的方法,因为我们知道递归、递归就是顺向遍历,然后逆向返回结果的过程,所以很容易的将中序遍历结果存入数组。下面也给出迭代法以及Morris 中序遍历法。 // 递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tree

2021-03-28 14:30:03 224

原创 浅谈 旋转链表 问题

旋转链表问题:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。思路:判断特殊情况。采用构建循环链表并找出尾节点位置的方法。计算链表长度,并算出实际所需移动位置数(len % k)。观察发现算出移动位置数对应的尾节点位置。将尾节点与下一节点断开。本题并未将临时创建节点释放。/** * Definition for singly-linked list. * struct ListNode { * int val; * Li

2021-03-27 13:01:04 78

原创 浅谈 二进制求和 问题

二进制求和问题:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。思路:题目给出非空字符条件,但我觉得为了函数的完整性应该进行判断。将字符串倒序后判断是否进位,进位加入到 carry 中存储以便后一加法判断是否继续进位。遍历完所有字符,若还有进位则在最后添上字符 ‘0’。将结果字符串反转并返回。class Solution {public: string addBinary(string& a, string

2021-03-26 20:54:31 97

原创 浅谈 删除排序链表中的重复元素 II 问题

删除排序链表中的重复元素 II问题:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。思路:参考 使排序链表中的元素唯一化问题,本题将多删除那个保留下来的节点。考虑到头节点可能会被删除,所以新建一个链表,并创建哑结点指向头指针域。如果为空链表则直接返回头节点。将指向重复元素的指针指向直到不相等的指针域为止。否则直接指向下一节点。直接方便地返回新链表的下一节

2021-03-25 12:18:36 138

原创 浅谈 删除排序链表中的重复元素 问题

删除排序链表中的重复元素给定一个 排序 链表,删除所有重复的元素,使得每个元素只出现一次。思路:采用动态操作指针的方法删除链表重复元素,但没有释放删除节点和哑结点空间。如果链表头指针为空返回空链表头结点。申请哑结点指向头节点,由于第一步已经判断头节点不为空,则只需判断下一节点是否为空作为循环条件。若元素重复,则将后一个的指针指向下下个指针域。否则指向下一个节点指针域。由于并未实际操作 head 指针,故此时直接方便地返回 head 即可。( 这便是申请哑结点的好处之一 )/**

2021-03-25 11:22:04 223 2

原创 常用高阶排序算法总结(归并、快速、希尔排序)

一、归并排序归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。时间复杂度: O(nlogn)空间复杂度:O(n)稳定二、快速排序它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此

2021-03-24 17:29:16 378

原创 常用中阶排序算法总结(桶、基数、堆排序)

文章导航一、桶排序二、基数排序三、堆排序一、桶排序桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。#include<iterator>#include<iostre

2021-03-24 17:04:46 217

原创 常用简单排序算法总结(冒泡、插入、选择排序)

文章导航一、冒泡排序二、一、冒泡排序void bubblesort(const int a[], const int& n){ bool sorted = false; // 整体排序标志,这是本算法的有力手段 while(!sorted){ sorted = true; // 假定已经排序 for(int i = 1; i < n; ++i){ // 自左向右逐对检查当前范围 a[0, n)内的各相邻元素 if(a[i - 1] > a[i]){ // 逆序

2021-03-24 16:48:18 410 1

原创 浅谈 132 模式 问题

132 模式给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。思路: 1 < 3 && 3 < 2 → 1 < 2采用单调栈法。如果数组元素个数小

2021-03-24 16:43:15 594

原创 浅谈 扁平化嵌套列表迭代器 问题

扁平化嵌套列表迭代器问题:给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个 整数 ,或者是另一个 列表 。其中列表的元素也可能是 ==整数 或是其他 列表 。思路:采用深度优先策略(dfs)递归嵌套整型列表,将所有整数放入数组。初始化迭代器 it 。/** * // This is the interface that allows for creating nested lists. * // You shoul

2021-03-23 13:20:19 118

原创 浅谈 省份数量 问题

省份数量问题:有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] == 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] == 0 表示二者不直接相连。返回矩阵中 省份 的数量。思

2021-03-22 23:00:08 283

原创 浅谈 位 1 的个数 问题

位 1 的个数问题:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。思路:通过前人发现,n & ( n - 1 ) 这个式子总是把 n 的最低位 1 变为 0.例: 7 → 1117 - 1 = 6 → 110 → 7 & 6 == 11010 == 101010 - 1 == 9 → 100110 & 9 == 1000故可根据此式将 n 的所有位逐一变为 0,并计数。c

2021-03-22 14:34:28 123

原创 浅谈 矩阵置零 问题

矩阵置零问题:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。思路:第一次遍历数组,用两个标志位数组记录原数组中出现 0 的位置。flag[i] == 1 表示第 i 行有 0;flag[j] == 0 表示第 j 列有 0;再次遍历数组,将有 0 的行和列统统置零。class Solution {public: void setZeroes(vector<vector<int>>&

2021-03-21 13:13:29 390

原创 浅谈 逆波兰表达式求值 问题

逆波兰表达式求值问题:根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。例:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9思路:采用栈求解逆波兰式遍历字符串数组,将数字直

2021-03-20 17:35:15 113 1

原创 浅谈 数组加一 问题

数组加一问题:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储 单个数字 。你可以假设除了整数 0 之外,这个整数不会以零开头。思路:一、暴力解决法此方法在这道题上行不通,对于数字过大则会报错;所谓暴力解决,就是先把数组转换为数字后加一再依次把各位数放到新数组中,下面会给出参考代码,但是不能 AC。二、试探法从最后一位开始试探,如果为 9 则进位(且变为0),并让下一位加一直到不用进位时停止试探

2021-03-19 16:15:44 1601

原创 浅谈 最后一个单词的长度 问题

最后一个单词的长度问题:给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。思路:从后往前扫描字符串,直到遇见非空格。(若全为空格 n 将变为 -1,最后计数结果仍为 0)从当前非空格开始计数到下一空格或该字符串的第一个字符为止结束。返回计数结果即为该字符串中最后一个单词的长度。class Solution {public: int l

2021-03-18 00:54:40 140 2

原创 组合两个表

组合两个表问题:编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State思路:由于题目指出地址信息可能没有,所以采用 外连接 的方法左外连接(left outer join)select FirstName, LastName, City, Statefrom Person left join Addresson Person.PersonId =

2021-03-17 21:06:51 74

原创 浅谈 回文子串 问题

回文问题:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。思路:判断字符串是否为空,为空则返回 0;若只有一个字符则返回1;接下来讨论多个字符组成的字符串情况长度为 n 的字符串有 2 * n - 1 个回文中心点;例: n = 2;回文中心点下标左扩展位下标右扩展位下标000101111主要就是判断每一位置是否为回文中心点(

2021-03-17 14:40:19 112

原创 浅谈 最大子序和 问题

最大子序和问题:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。思路: 动态规划如果数组只有一个元素直接返回该元素即可。用变量 preSum 保存当前前缀和。比较当前子序和与当前元素的大小,取大的作为后续子序和。更新最大子序和。返回子序和。class Solution {public: int maxSubArray(const vector<int>& nums) const {

2021-03-17 00:41:01 148

原创 深入理解计算机系统 第一章——计算机系统漫游

强烈建议翻看原文解读,小的只是做做笔记。问题抽象、系统抽象和数据抽象是计算机类专业毕业生的核心能力。知识点在补码表示中负数和正数的范围是不对称的。算术溢出是造成程序错误和安全漏洞的一个常见根源。信息就是 位 + 上下文源程序实际上就是一个由值 0 和 1 组成的位(又称为比特)序列,8 个位被组织成一组,称为字节。像 .c 文件这样只由 ASCII 字符构成的文件称为文本文件,所有其他文件都称为二进制文件。系统的硬件组成总线被设计成传送定长的字节块,也就是字(word)

2021-03-10 22:38:54 174

原创 浅谈 删除字符串中的所有相邻重复项 问题

删除字符串中的所有相邻重复项问题:给出由小写字母组成的字符串 S,重复项删除操作会选择 两个 相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。思路:纵观题目,明确指出每次删除两个字符,这很容易让我们想到类似的括号匹配问题。这就引出了 栈 这种数据结构。采用字符串模拟 栈 结构处理问题。首字符加入结果串,后续判断是否相邻有相同字符即可。如果相同则删除,不同则加入结果串。返回结果串。

2021-03-09 15:29:48 197

原创 一张图让你学习 C++ 少走弯路

2021-03-06 19:15:45 167

原创 浅谈 下一个更大元素 II 问题

下一个更大元素 II问题:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。思路:由题可知我们最多遍历两遍数组,所以把前 n - 1 个元素模拟衔接到原数组后面可以更好地解决问题。采用单调栈法。将下标 i 依次压入栈中,寻找下一位置比栈顶大的数。找到后将其赋值给结果数组(下标为原始数组 i 处)

2021-03-06 19:08:51 90

原创 浅谈 用栈实现队列 问题

用栈实现队列问题:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false思路:用双栈实现 FIFO 队列。第一个栈用来保存压入(输入)的数据。第二个栈用来存

2021-03-05 16:20:43 95

软件工程导论第六版(张海潘、牟永敏)著 (Answers to exercises after class)

课后习题答案

2021-06-09

小小米计算器counter.exe

主要是针对其中 栈 和 队列 的应用 源代码学习地址 https://blog.csdn.net/weixin_48033173/article/details/117375746

2021-05-28

Phonebook.exe

简单的电话薄实现,试跑 .exe 文件。纯 C++ 实现 源码学习 https://blog.csdn.net/weixin_48033173/article/details/116213945

2021-04-28

Java结业实验复习资料题目大全.pdf

此文档感恩回馈所有关注我的人,适合刚学完java基础想要快速巩固知识点的兄弟姐妹,全部题目纯手打并附有运行结果。题目难度循序渐进,知识点覆盖全面,想要考过期末考试或者等级考试的感觉下载学起来吧。一口气学完会有心间流过一股清泉的感觉哦。

2021-03-26

生论.pdf --- 看完你会静下心好好敲代码

迷茫的孩子们,努力奋斗才是你们每一分每一秒最好的选择

2021-01-28

calculator.exe

一个 java 开发的简单计算器,会计算加减乘除,还能带括号和小数运算。源码学习链接 https://blog.csdn.net/weixin_48033173/article/details/110521143

2020-12-24

简单迷宫(Maze)java编写

迷宫生成的 exe 可执行文件,源码纯 java 编写,有 gre 环境便可执行,学习源码可查看链接 https://blog.csdn.net/weixin_48033173/article/details/111353826

2020-12-18

Greedy-Snake_贪吃蛇

贪吃蛇小游戏,闲的无聊可以下来玩玩,哈哈。由于java编写,所以需要 jre 环境噢,电脑装了java的都有此环境。纯手打,java开发,学习开发全流程见 https://blog.csdn.net/weixin_48033173/article/details/110941866

2020-12-11

mysql-connector-java-8.0.22.jar

MySQL的 ODBC 驱动安装包,感觉每次进官网下载都好慢,所以就自己上传了,方便自己以后下载和供他人方便。

2020-11-28

哈佛学习力.docx

你想拥有哈佛学生的学习力吗,掌握里面的方法和技巧吧,理解里面的每一点,你的生活将从此发生巨变,你也会拥有更好的生活,学会更多更多的东西,没有什么是你难以抵达的,这将成为引领你一生的文库,如若你阅读之后,内容不多,但需要你至少用半生去学习,去体会,慢慢成长,你终将成为你想要成为的那个人,那个人也会变成你喜欢的样子。相信我!不要带着功利心去阅读,因为有些人越长大越不懂的遵循自己的内心,活在了别人设定的框框里,再也出不来了,祝大家好运。

2020-10-10

空空如也

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

TA关注的人

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