自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wake_alone

从入门到放弃

  • 博客(60)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 剑指offer15--二进制中1的个数——java/C++实现

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。leecode338. Bit位计数思路:这个题目只需要输入的这个数,所以思路是不一样的。用O(sizeof(输入))即O(n)方法其实最简单解法1:因为有补码,所以不能用n/=2的方法跳出循环,必须循环32次class Solution {public: int NumberOf...

2018-07-31 17:10:21 161

原创 剑指offer14--剪绳子——java/C++实现

链接:https://www.nowcoder.com/questionTerminal/25b04bac36b840ab93f6fd913d1c7247来源:牛客网编程题【问题描述】给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]*k[1]*...*k[m]可能的最大乘...

2018-07-31 16:08:18 341

原创 剑指offer13--机器人的运动范围——java/C++实现

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路:回溯法:考虑清楚如何...

2018-07-27 17:02:36 195

原创 剑指offer12--矩阵中的路径——java/C++实现

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...

2018-07-27 15:40:05 153

原创 C++ inline函数的一点理解(参数传递和函数调用)

#include <iostream>using namespace std;static inline int func(int a,int b){ return a+b;}int func1(int a,int b){ return a+b;}int main (){ int a=1; int b=2; int a1=1; int b1=2; ...

2018-07-27 14:05:08 1019

原创 剑指offer11--旋转数组的最小数字——java/C++实现

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:非减序列---递增序列+相邻可能相等的序列既然旋转了,那么我们直接找到比前一个元素...

2018-07-27 13:03:41 109

原创 面试常考JAVA/C++:排序算法1(冒泡排序,插入排序,快速排序)

冒泡排序:void swap(int* a,int* b){ int tmp=*a; *a=*b; *b=tmp;}void BubbleSort(int A[],int N){ for(int i=0;i<N-1;i++) for(int j=0;j<N-i-1;j++){ if(A[j]<A[j-1]) swap(A[j],A[j-1]...

2018-07-26 17:16:47 339

原创 C++ STL---set总结

自动排序 没有下标访问的方式 查找的返回值两个:first是地址--可以用it指向,second是bool是否成功 set和map的iterator除非删除这个迭代器指向的,否则迭代器不会失效,因为是指针指向的。 set的插入和搜索速度为log2 N#include <iostream>#include <set>using namespace std;...

2018-07-26 16:54:31 129

原创 剑指offer10(牛客)--矩阵覆盖——java/C++实现

题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路:输入2*n的矩形,从最左边考虑,竖着覆盖一个,还剩F(n-1),横着覆盖一个,下面必须也覆盖横着的,还剩F(n-2).还是斐波那契数列class Solution {public: int rectCover(int ...

2018-07-26 11:14:41 179

原创 剑指offer10(牛客)--变态跳台阶——java/C++实现

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:其实这个也很简单,我们可以发现输入number 输出re's 0 0 1 1 2 2(1+1) 3 4(1+2+1) 4 8(1+2+4+1) 5 16(1+2+4+8+1) 6...

2018-07-26 11:06:48 147

原创 剑指offer10--跳台阶——java/C++实现

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。递归写法:4msclass Solution {public: int jumpFloor(int number) { if(number==0) return 0; if(number==1) return 1...

2018-07-26 10:53:22 138

原创 剑指offer10--斐波那契数列——java/C++实现

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39依次算:class Solution {public: int Fibonacci(int n) { if(n<=0) return 0; if(n==1) return 1; int ...

2018-07-26 10:37:06 108

原创 剑指offer9--用两个栈实现队列/用队列实现栈——java/C++实现

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:没啥好说的。。。class Solution{public: void push(int node) { stack1.push(node); } int pop() { if(stack2.empty())...

2018-07-26 09:45:01 94

原创 7-9 旅游规划(25 point(s))---MOOC浙大数据结构

有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编...

2018-07-25 13:39:44 915

原创 剑指offer8--二叉树的下一个结点——java/C++实现

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:失败:刚开始想着先看根,再看叶子结点,再看中间。这样就没有结合题目,很麻烦了。正确:中序,有没有右子树,有的话,必须找右子树的最左边的节点。如果有,那么得分是左子节点(直接返回父节点)右子节点--------一直找父节点,如果父节点...

2018-07-25 11:12:36 87

原创 剑指offer7--重建二叉树——java/C++实现

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val; * ...

2018-07-24 23:43:15 107

原创 剑指offer6--从尾到头打印链表——java/C++实现

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。vector的利用:/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* }...

2018-07-24 21:53:12 177

原创 剑指offer5--替换空格——java/C++实现

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy思路1:从左往右循环,遇到空格,就要把后面的全部往后挪2个位置。时间O(n2)思路2:p1指针指向字符串尾巴,p2指针指向扩充完之后的遇到空格,就把p1指针前移,p2指针补充0,2,%三个,前移3次。这样...

2018-07-24 19:36:10 120

原创 剑指offer4--二维数组中的查找——java/C++实现

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:从右上角/左下角开始处理,如果大于就不在这个列,y--;如果小于就不在这个行,x++;如果等于返回true坑:x,y都能够等于0。边界条件要判断好。...

2018-07-24 16:43:26 110

原创 剑指offer3--数组中重复的数字

链接:https://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8来源:牛客网在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3}...

2018-07-24 15:56:06 137

转载 一篇文章看明白 C++ 虚函数表

 看了鸡啄米的博客,感觉挺易懂的。入门的就简单的介绍,如果是需要进行深入理解的,也有相应的测试博客,配合着书本来看很好。我这里只贴一些代码,详细的建议看原博客。一篇文章看明白 C++ 虚函数表#include <iostream> using namespace std; class Base1 { public: virtual void f()...

2018-07-24 14:47:06 127

原创 leetcode717. 1比特与2比特字符

有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例 1:输入: bits = [1, 0, 0]输出: True解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例 2:输入: ...

2018-07-24 10:38:26 306

原创 leetcode542. 01 矩阵

给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1: 输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2: 输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。 给定...

2018-07-23 21:53:29 608

原创 剑指offer24--反转链表——java/C++实现

输入一个链表,反转链表后,输出新链表的表头。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) ...

2018-07-23 15:39:47 140

原创 leecode338. Bit位计数

给定一个非负整数 num。 对于范围 0 ≤ i ≤ num 中的每个数字 i ,计算其二进制数中的1的数目并将它们作为数组返回。示例:比如给定 num = 5 ,应该返回 [0,1,1,2,1,2].进阶:给出时间复杂度为O(n * sizeof(integer)) 的解答非常容易。 但是你可以在线性时间O(n)内用一次遍历做到吗? 要求算法的空间复杂度为O(n)。 你能进一步...

2018-07-23 14:28:16 178

转载 C++位运算,全排序,全组合

C++ STL 全排列函数详解STL方法:#include <iostream>#include <algorithm>using namespace std;int main (){ int arr[] = {3,2,1}; cout<<"用prev_permutation对3 2 1的全排列"<<endl; ...

2018-07-23 13:15:27 855

原创 leetcode106. 从中序与后序遍历序列构造二叉树

根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路:递归的思想后序的最后一个就是根节点,在中序里面找到这个...

2018-07-23 11:20:02 1054

原创 leetcode19. 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路1:可以循环两次,第一次找到倒数第N个,第二次循环删...

2018-07-22 15:50:17 103

原创 leetcode70. 爬楼梯

假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 + 1 步2. ...

2018-07-22 14:17:29 79

转载 C++字符串分割

void SplitString(const std::string& s, std::vector<std::string>& v, const std::string& c){ std::string::size_type pos1, pos2; pos2 = s.find(c); pos1 = 0; while(std::string::npo...

2018-07-20 16:55:35 122

原创 leetcode98. 验证二叉搜索树

给定一个二叉树,判断其是否是一个有效的二叉搜索树。一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4  / \  3 6...

2018-07-20 16:09:24 604

原创 leetcode15. 三数之和

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路:先找两数之...

2018-07-20 14:59:06 154

原创 leetcode257. 二叉树的所有路径

 给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 思路:自己做的比较麻烦,建议直接看后面的我的思路还...

2018-07-20 11:27:26 1298

转载 【整理】C/C++中字符串与整数之间的相互转换

一、用C标准IO库中的sprintf()和sscanf()转换 sprintf()函数原型:#include <stdio.h>int sprintf(char *str,const char *format);函数的功能是:将变量打印到字符串中。(与printf的用法一致,区别仅在于sprintf()打印到字符串,而printf()打印到标准输出)因此可利用s...

2018-07-20 11:25:25 700 2

原创 leetcode102,107. 二叉树的层次遍历

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]] 思路:借用队列,这道题目因为要求用二位vector进行处理...

2018-07-20 10:01:46 210

原创 leetcode94.144.145二叉树遍历---前中后(递归,非递归)---C++/Java 实现

二叉树:前序: 1-2-4-8-5-9-3-6-10-7 根左右中序: 8-4-2-5-9-1-6-10-3-7 左根右后序列: 8-4-9-5-2-10-6-7-3-1 左右根递归实现#include <iostream>#include <stack>#include <list>...

2018-07-19 16:36:36 178

转载 C++基础:C++标准库之栈(stack)和队列(queue)

C++基础:C++标准库之栈(stack)和队列(queue)

2018-07-19 14:11:54 16199

原创 leetcode64. 最小路径和---动态规划

 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[  [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。 思路:状态方程为:S[i][j]=A[i][j] + min(S[i-1...

2018-07-19 10:13:35 656

原创 C++ STL---vector总结(四):二位数组

不用vector,动态申请和初始化。 int **dp=new int * [n]; for(int i=0;i&lt;n;i++) dp[i]=new int[m]; for(int i=0;i&lt;n;i++) memset(dp[i],0,sizeof(int)*m);用Vector,一定要考虑清楚横纵的大小,提前设置好,否则会报错具体设置方法如下: vec...

2018-07-19 10:01:44 257

原创 leetcode300. 最长上升子序列

给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?典型的...

2018-07-16 22:16:44 230

apue文档英文版

英文第3版

2017-05-18

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

TA关注的人

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