自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dreamispossible的博客

踏踏实实写代码

原创 你想要了解的贪心算法都在这里

贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,...

2019-10-24 20:32:36

阅读数 177

评论数 0

原创 Http的八种请求方法

1.GET get方法请求指定的页面信息,返回实体主体。该请求是向服务器请求信息,请求参数会跟在url后面,因此,对传参长度有限制的,而且不同浏览器的上限是不同的(2k, 7~8k及其他)。由于get请求直接将参数暴露在url中,因此对于一些带有重要信息的请求可能并不完全合适。 2.POST po...

2019-08-26 21:47:27

阅读数 162

评论数 0

原创 如何优雅的反转单链表以及变种形式

【题目描述】 反转单链表。 例如链表为: 1->2->3->4 反转后为: 4->3->2->1 【要求】 :如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1). 【解答】 方法1 这道题还是挺简单的,当我们在反转一个节点的时候,把...

2019-08-20 19:23:25

阅读数 167

评论数 1

原创 TCP基本通信流程

TCP 通信基本流程 不管多么复杂的服务器或客户端程序,其网络通信的基本原理一定如下所述: 对于服务器,其通信流程一般有如下步骤: 调用 socket 函数创建 socket(侦听socket) 调用 bind 函数 将 socket绑定到某个ip和端口的二元组上 调用 listen 函数 开...

2019-08-11 19:20:23

阅读数 164

评论数 0

原创 浅析动态规划-----------不看后悔系列

写在前面的话 讲道理,我对dp这块的理解并不深,当初学的时候,也仅仅停留在一些名词上。比如大佬们经常说的数位dp,树形dp,区间dp,插头dp,棋盘dp,背包dp等等。。。 那究竟什么是dp呢?维基百科上是这样定义的: DP就是一种方法,该方法能够将复杂的问题分解成为一系列简单的子问题。 时隔...

2019-08-05 23:05:33

阅读数 153

评论数 0

原创 Leetcode:刷完31道链表题的一点总结

前言 今天终于刷完了 Leetcode 上的链表专题,虽然只有 31 道题(总共是 35 道,但有 4 道题加了锁)而已,但也陆陆续续做了两三个星期,严重跟不上原先计划啊。先写一篇博客总结一下这阵子刷链表题的收获吧,有输入也要有输出。这里就不花篇幅介绍链表的一些基本概念了,不清楚的看官就自行百度...

2019-07-24 22:57:50

阅读数 138

评论数 0

原创 通俗易懂的进程与线程之间的关系(有图)

写在前面的话 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 1 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。...

2019-07-19 17:10:03

阅读数 376

评论数 0

原创 一行代码解决约瑟夫环问题

约瑟夫环 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方法一:数组 在第一次遇到这个题的时候,我是用数组做的...

2019-07-17 21:00:14

阅读数 1693

评论数 0

原创 斐波那契凤尾

链接:https://www.nowcoder.com/questionTerminal/c0a4b917a15f40a49ca10532ab9019fb NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。 为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波...

2019-07-11 18:50:17

阅读数 150

评论数 0

原创 美国节日

链接:https://www.nowcoder.com/questionTerminal/d95d98a2f96e49078cd7df84ba0c9d79 和中国的节日不同,美国的节假日通常是选择某个月的第几个星期几这种形式,因此每一年的放假日期都不相同。具体规则如下: 1月1日:元旦 1月的第...

2019-07-11 18:48:31

阅读数 278

评论数 0

原创 删除排序数组中的重复项(I和 II)

描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nu...

2019-06-25 23:49:40

阅读数 121

评论数 0

原创 一看就懂的贪心算法

写在前面的话 今天我介绍的主题是贪心算法。这是相对比较容易的一种算法。我这里不给出定义,因为大家可以自行网络搜索。咱们直接看例子。 贪心算法,如果不用手动证明一个问题的数学性质的话,其实是比较简单的。看这样一个例子:假设有一个背包,其最大容量是50KG,现在有各种不同价值的液体,比方说,有水,其...

2019-06-22 23:28:56

阅读数 221

评论数 0

原创 腾讯面试题:有了二叉查找树、平衡树为啥还需要红黑树?

1、二叉查找树的缺点 二叉查找树,相信大家都接触过,二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图 基于二叉查找树的这种特点,我们在查找某个节点的时候,可以采取类似于二分查找的思想,快速找到某个节点。n 个节点的二叉查找树,正常的情况下,查找的时间复杂度为 O...

2019-06-19 23:46:35

阅读数 351

评论数 0

原创 字符串匹配BM(Boyer-Moore)算法:文本编辑器中的查找功能是如何实现的?

写在前面的的话 关于字符串匹配算法有很多,之前我有写过一篇 KMP 匹配算法: https://blog.csdn.net/dreamispossible/article/details/91359237 不懂 kmp 的建议看下,写的还不错,这个算法虽然很牛逼,但在实际中用的并不是特别多。至于...

2019-06-17 22:42:27

阅读数 153

评论数 0

原创 手套

题目描述 在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手)...

2019-06-12 23:40:42

阅读数 169

评论数 0

原创 跳石板

题目描述 小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3… 这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M...

2019-06-10 23:16:23

阅读数 124

评论数 0

原创 数字和为sum的方法数

题目描述 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 输入描述: 输入为两行: 第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000) 第二行为n...

2019-06-10 23:09:31

阅读数 126

评论数 0

原创 我所理解的KMP算法

字符串匹配算法 字符串匹配是计算机的进行的非常频繁的算法。简单的说,有一个字符串 I have a dream. 。我想知道的事情是,里面是否包含另一个字符串 dream ? 因为执行的非常频繁,所以算法的效率也就十分重要。而本文所说的KMP算法,无疑是速度上面的佼佼者,它可以在 O(n+m) 的...

2019-06-09 23:54:36

阅读数 145

评论数 0

原创 阶乘相关的一些面试题

案例一        给定一个整数 N,那么 N 的阶乘 N! 末尾有多少个 0?例如: N = 10,则 N!= 3628800,那么 N! 的末尾有两个0。       ...

2019-06-08 16:39:15

阅读数 190

评论数 0

原创 面试中被问到三次握手四次挥手应该怎么回答?---------不看后悔系列

写在前面的话 在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的博客,今天的这篇博客,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 ...

2019-06-08 16:05:01

阅读数 966

评论数 2

原创 找出不大于N的最大的2的幂指数

      传统的做法就是让 1 不断着乘以 2,代码如下: int findN(int N) { int sum = 1; while (true) { if (sum * 2 > N) { return...

2019-06-07 22:25:12

阅读数 273

评论数 0

原创 m的n次方

      如果让你求解 2 的 n 次方,并且不能使用系统自带的 pow 函数,你会怎么做呢?这还不简单,连续让 n 个 m 相乘就行了,代码如下: int pow(int n) { int tmp = 1; for (int i ...

2019-06-07 22:14:03

阅读数 363

评论数 0

原创 腾讯面试题,如何寻找一个数组里面唯一不重复的元素?要求时间复杂度o(n)和空间复杂度o(1)

找出不重复的数 题目描述: 有一组存放 ID 的数据。并且 ID 取值为 0 - (N-1) 之间,其中只有一个 ID 出现的次数为 1,其他的 ID 出现的次数都等于 2,问如何找到这个次数为 1 的 ID ?       解法一:...

2019-06-07 22:08:22

阅读数 408

评论数 0

原创 另类加法

题目描述 请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。 给定两个int A和B。请返回A+B的值 测试样例: 1,2 返回:3 /* 1. 二进制位异或运算相当于对应位相加,不考虑进位 比如: 1 ^ 1 = 0 ---> 1 + 1 = 0 (当前位...

2019-05-31 23:48:34

阅读数 122

评论数 0

原创 井字棋

题目描述 对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。 给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。 测试样例: [[1,0,1],[1,-1,-1],[1,-1,0]] 返回:true ...

2019-05-31 23:35:13

阅读数 439

评论数 0

原创 求最小公倍数

题目描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。 输入描述: 输入两个正整数A和B。 输出描述: 输出A和B的最小公倍数。 #include<iostream> using namespace std;...

2019-05-27 22:31:45

阅读数 122

评论数 0

原创 两种排序方法

题目描述 考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如: “car” < “carriage” < “cats” < "doggies < “koala” 2.根据字符串的长度排序...

2019-05-27 22:13:12

阅读数 142

评论数 0

原创 合并两个排序的链表(递归&非递归)

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 (1)递归版本 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), ne...

2019-05-27 00:10:19

阅读数 152

评论数 0

原创 详解递归思想

写在前面的话 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! 可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不知道怎么使用,有时候还容易被递归给搞晕。最近看了很多关于递...

2019-05-25 22:39:15

阅读数 298

评论数 0

原创 进制转换

题目描述 给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数 输入描述: 输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。 输出描述: 为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,...

2019-05-24 22:42:13

阅读数 122

评论数 0

原创 计算糖果

题目描述 A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息: A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数. 现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C...

2019-05-24 22:29:28

阅读数 128

评论数 0

原创 n个数里出现次数大于等于n/2的数

题目描述 输入n个整数,输出出现次数大于等于数组长度一半的数。 #include<iostream> using namespace std; int main() { int n = 0; int x = 0; int count[100] = {0}; ...

2019-05-23 23:51:45

阅读数 131

评论数 0

原创 字符串中找出连续最长的数字串

题目描述 读入一个字符串str,输出字符串str中的连续最长的数字串 #include<iostream> #include<string> using namespace std; int main() { string str,cur,ret; cin ...

2019-05-23 23:43:56

阅读数 596

评论数 0

原创 倒置字符串(两种解法)

题目描述 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I 第一种解法 #include <iostream> #include <string> #include <algorithm&g...

2019-05-22 00:05:32

阅读数 394

评论数 0

原创 排序子序列

牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列. 如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列...

2019-05-21 23:56:25

阅读数 174

评论数 0

原创 字符串转整数

题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 输入描述 输入一个字符串,包括数字字母符号,可以为空 输出描述 ...

2019-05-20 23:44:14

阅读数 121

评论数 0

原创 调整数组顺序使奇数位于偶数前面(三种解法)

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 1.利用两层循环(类似于冒泡排序) class Solution { public: void reOrd...

2019-05-20 23:39:10

阅读数 129

评论数 0

原创 组队竞赛:牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。

例如: 一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2 为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。 如样例所示: 如果牛牛...

2019-05-20 00:05:22

阅读数 276

评论数 0

原创 删除公共字符

题目描述 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.” #include<iostream> #include<string>...

2019-05-20 00:01:03

阅读数 140

评论数 0

原创 逆序打印单链表(四种解法)

题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 链表的结构 struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...

2019-05-18 21:48:10

阅读数 335

评论数 0

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