自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer——数组中出现次数超过一半的数字

class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int length = numbers.size(); if(CheckInvalidArray(numbers, length)){ return 0; ...

2018-09-19 21:41:13 162

原创 圈地运动——多边形构成问题

题目描述:给n个木棒以及木棒的长度,求最少能构成多边形的木棒数目。要求如果选择第i个木棒,就必须选择前面的(i-1)个,即要按照木棒给出的顺序来选择。如果不能构成多边形,则返回-1;否则返回构成多边形的木棒数量。输入描述:3 (木棒数量)6 8 10 (每根木棒对应的长度)输出描述:3 (6,8,10刚好能构成三角形,满足两边之和大于第三边)同理:N多边形的构成条件也是(N-1)条边...

2018-09-18 11:15:05 703

原创 剑指offer——把数组排成最小的数

方法一:用标准库中的next_permutation()进行暴力法求解:class Solution {public: string PrintMinNumber(vector<int> numbers) { if(numbers.empty()){ return NULL; } sort(numbe...

2018-09-17 14:09:28 164

原创 等式去括号后的等价变换

题目说明:等式只包括+、-、(、)以及小写字母等字符,判断去掉括号后的等价等式,如以下例子: 输入样例:(a+b)-(d-f+e)+h-i-(k-s)+(n-r) 输出样例:a+b-d+f-e+h-j-k+s+n-r 思路:(1)设定两个指针st1,st2,指针st1始终跟在st2后面遍历,当st2碰到’(‘时,判断st1指向的字符是否为‘-’, (2)若是,则括号内的符号需要变号,即从’...

2018-09-15 20:00:16 616

原创 找出所有路径跨越的总和

解题思路: (1)将输入的路径按照起点值的大小排序:如测试用例1中排序完后应该是 1 2 4 7 5 8 (2)依次计算每段路径的长度,且要判断是否与前面的路径发生重叠,如果发生重叠,则以当前路径的终点减去上一段路径的终点;如果没有重叠时,则以当前路径的终点减去当前路径的起点;即以当前路径的终点减去二者之间的最大值(上一段路径的终点和当前路径的起点)#include<ios...

2018-09-15 14:30:56 163

原创 leetcode8——字符串转整数

分三种情况讨论: 1. 判断是否为空:输入为空时,输出0,并标记是因为非法输入导致的 2. 错误输入:如果字符串的前部分字符为空,此时忽略前面为空的部分,即从有正常字符的位置开始计算,如输入字符串为“ 42”,则输出为42; 3. 特殊输入:第一个有效字符是否为‘+’或‘-’,则先判断最后输出的整数位正还是负数 4. 考虑溢出等情况,如INT_MIN, INT_MAX;class ...

2018-09-12 14:20:25 402

原创 Leecode3——无重复字符的最长子串

题目说明: 如,在”abcabcbb”中,其无重复字符的最长子字符串是”abc”,其长度为 3; 对于,”bbbbb”,其无重复字符的最长子字符串为”b”,长度为1。 基本思路: 遍历该字符串,往集合里面插入元素; (1)插入成功,说明无重复,继续插入; (2)插入不成功时,元素有重复,记录当前最大长度,查找与当前元素重复的前面重复元素的下标,并清空集合,并从该下标的下一个位置继续插入...

2018-09-10 18:39:35 185

原创 给定一个数组arr,返回子数组的最大累加和

#include <iostream>using namespace std; int maxSum(int *arr, int L){ if(arr==NULL || L == 0){ return 0; } int Max=INT_MIN; int cur=0; for(int i=0;i!=L;i++){ ...

2018-09-10 18:26:37 1066 1

原创 最小的k个数

#include <iostream>#include <stdio.h>#include <math.h>#include <string>#include <vector>using namespace std;int Partition(int low,int high,

2018-09-06 16:41:00 100

原创 携程笔试题9.4

第一题:针对只包含数字,字母以及6个特殊字符的字符串,只验字母A~z以及[]^_’ 6个特殊字符部分才是有效的,提取1Ct3r4ip_ti4C6k9Et^:正确的优惠券码:Ctrip_tiCkEt^ [ 91 \ 92 ] 93 ^ 94 _ 95 ’ 96 a~z 97~122 A~Z 65~90 满足条件的这些字符正好是连续的ASCII值,因此只用一句if语句...

2018-09-05 09:11:07 893

原创 剑指offer——二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。class Solution { bool judge(vector<int> &sequence, int l, int r){ if(l>=r) return true; int i = ...

2018-09-04 15:49:27 124

原创 剑指offer——从上往下打印二叉树

一开始没有写(1)(2)判断语句,提交答案出错class Solution {public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector<int> result; if(root == NULL)//(1)重要 return resu...

2018-09-04 15:14:45 87

原创 剑指offer——包含min函数的栈

(1) 每次弹出栈顶能保证min,因此压入栈的时候我们队栈里面的元素做排序操作,使得最小的元素处于栈顶的位置, 但是这样不能保证栈的先入后出的规则 (2) 对于时间复杂度有一定的要求,那么我们可以考虑以空间换时间的思想#include<iostream>#include<stack>using namespace std;//包含min函数的栈class S...

2018-09-04 14:53:30 105

原创 合并两个排序的链表

#include<iostream>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution {public: L...

2018-09-02 20:16:26 130

原创 小Q的歌单

#include<iostream>#include<vector>using namespace std;long long dp[101][101];const int M = 1000000007;//求组合数C(n,m)void fun(){ for(int i = 0; i < 102;

2018-09-01 12:32:22 242

原创 动态规划求组合数

动态规划求组合数 C(n,m)=C(n-1,m)+C(n-1,m-1), 满足n>=m且n>0 (1)n=0时,无意义,n< m时,无意义 (2) m = 0时,C(n, 0) =1; m=1时, C(n, 1)=n; (3) n=1时,C(n,m) = 1; m=n时,C(n,m)=1; (4) 否则C(n, m) = C(n-1, m-1)+ C(n-1...

2018-09-01 11:57:42 2724

原创 lintcode254——Drop eggs(动态规划)

#include<iostream>#include<vector>#include<algorithm>using namespace std;//鸡蛋数为2个int dropEggs(int n) { if(n <= 0) return -1; int **dp = new int *[3];//n层楼,两个

2018-08-29 17:24:43 390

原创 360笔试(2018.08.27)

#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){ int N; cin>>N; vector&am

2018-08-27 23:04:59 470

原创 leetcode197——排列序号

题目描述: 给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 例如,排列 [1,2,4] 是第 1 个排列。class Solution {public: long long permutationIndex(vector<int> &A) { vector<int> temp(A);...

2018-08-26 12:01:31 256

原创 切金条——贪心策略(堆)

题目说明: 一块金条切成两半,是需要花费和长度数值一样的铜板的。比如 长度为20的 金条,不管切成长度多大的两半,都要花费20个铜 板。一群人想整分整块金 条,怎么分最省铜板? 例如,给定数组{10,20,30},代表一共三个人,整块金条长度为 10+20+30=60. 金条要分成10,20,30三个部分。 如果, 先把长 度60的金条分成10和50,花费60 再把长度50的金条分成2...

2018-08-25 21:30:53 1115

原创 lintcode100——删除排序数组中的重复数字

题目说明:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 要求:不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 算法思想:通过遍历数组,记录重复元素区间的第一个位置和最后一个元素的下一个位置,通过copy将后面的元素往前移动,过滤掉多余的重复元素,同时通过resize更新数组的最新长度,继续遍历,重复该过滤操作。最后返回最新数组的...

2018-08-25 14:39:19 165

原创 剑指offer——数组中出现次数超过一半的数字

给定一个字符串,求一个最长子串使得A和B数量相等#include<iostream>#include<string>#include<vector>using namespace std;int getSubstring(string &s){ if(s.empty()) return -1;

2018-08-23 17:39:00 192

原创 两个队列实现栈

#include<iostream>#include<stack>#include<queue>using namespace std;int popStack(queue<int> &q1, queue<int> &q2){ int top; if(q1.empty() && q

2018-08-22 23:23:21 114

原创 一个数组,负数放左边,正数放右边

快速排序一次划分的应用#include<iostream>using namespace std;void swap(int *arr, int i, int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}void paritition(int *arr, int n){ i...

2018-08-22 22:39:22 3542 1

原创 连续子数组最大和

对于其中的测试用例:{-5,3,2,-1,4,-3}; arr -5 3 2 -1 4 -3 sum_index 3 8 5 3 4 -3 sum_max_index 4 4 4 4 4 5sum_max[i]代表i开头的所有子数组的最大累加和 sum_max_index[i]取得最大...

2018-08-22 21:51:03 133

原创 杨辉三角

#include<stdio.h>#include<iostream>using namespace std;//第n层(顶层为0层)正好对应于二项式展开系数//创建杨辉三角,N表示三角形的行数void main(){ int rows = 10; for(int i = 0; i < rows; i ++){ int n...

2018-08-22 16:48:26 113

原创 冒泡和快排数据元素交换过程

#include<iostream>#include<windows.h>using namespace std;void swap(int *arr, int i, int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}void printArray(int *arr, ...

2018-08-22 15:41:24 142

原创 贪心策略——项目利润

题目描述: 输入: cost[]:每个项目的花费 profits[]:每个项目的利润(纯利润) k:最多能做k个项目 w:表示初始资金 输出:最后获得的最大钱数 说明:一次只能做一个项目,且做完一个之后马上就能获得收益,可以支持做下一个项目/*贪心策略:当资金有限时如何选择那个项目使得挣的钱最多算法思想:(1)将所有项目按照花费值costs加入到小根堆中(2)从小根堆中取...

2018-08-22 15:01:42 326

原创 两个有序数组中,求所有数中第k个大的数字

#include<iostream>using namespace std;//两个有序数组中,求所有数中第k个大的数字int FirstKMax(int arr1[], int arr2[], int k, int L1, int L2){ if(L1 + L2 < k) return -1;//表示不存在第k个大的数 int count...

2018-08-22 13:31:18 1357 1

原创 简单的动态规划----爬楼梯问题

#include<iostream>#include<map>using namespace std;/*有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。*///递归算法int getClimbingWays(int n){ if(n < 1){ return ...

2018-08-19 21:47:39 400

原创 二叉树的递归与非递归遍历

/*二叉树的递归遍历与非递归遍历*/#include<iostream>#include<stack>using namespace std;struct BiTreeNode{ int value; BiTreeNode *left; BiTreeNode *right; BiTreeNode(int data){ ...

2018-08-15 11:58:03 344

原创 排序后的数组相邻元素之间的最大差值

题目描述:给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。思想:基于桶排序的基本思想。 分成n+1个桶,首先找出最小和最大值分别放在第一个桶和最后一个桶,剩下的n-1个桶按照数组的最大和最小值平均分。当数组元素大于2时,排序之后的相邻元素的最大差值肯定不是存在于同一个桶内,因此只需存储每个桶内的最大和最小值,以及该桶内是否有元素(1表示...

2018-08-14 20:28:21 2331

原创 堆排序

#include<iostream>#include<math.h>#include<algorithm>#include<vector>#include<time.h>#include&amp

2018-08-13 22:00:59 115

原创 经典快速排序

int partition(int *arr, int low, int high){ int pivot = arr[low]; while(low < high) { while(low < high && arr[high] >= pivot) --high; if(low &...

2018-08-13 21:38:27 153

原创 基于荷兰国旗问题的快速排序

//基于荷兰国旗问题的快排partition2int *partition2(int *arr, int L, int R){ int less = L - 1; int more = R; while(L < more){ if(arr[L] < arr[R]){ swap(arr, ++ less, L ++); ...

2018-08-13 20:46:53 332

原创 荷兰国旗问题

给一个数组arr和一个数字num,小于num放在左边,等于num的放在中间,大于num的放在右边void *partition(int *arr, int L, int R, int num){ int less = L - 1; int more = R + 1; int cur = L; while(cur < more){ if(a...

2018-08-12 22:14:03 231

原创 冒泡排序的对数器使用——C++版本

#include<iostream>#include<math.h>#include<algorithm>#include<vector>#include<time.h>#include<malloc.h>using namespace std;//void swap(int *arr, int i, int ...

2018-08-12 17:23:38 468 4

原创 网易编程题----01串问题

如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: “1”,”10101”,”0101010”都是交错01串。 小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。 输入描述:输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含’0’和’...

2018-08-10 16:47:04 2247

原创 lintcode——最长AB子串

描述 给你一个只由字母’A’和’B’组成的字符串s,找一个最长的子串,要求这个子串里面’A’和’B’的数目相等,输出该子串的长度。 这个子串可以为空。 s的长度n满足 2<=n<=1000000。样例 给定s=”ABAAABBBA”,返回8。 解释: 子串 s[0,7] 和子串 s[1,8] 满足条件,长度为 8。给定s=”AAAAAA”,返回0。 解释: s ...

2018-08-06 20:06:08 1091

原创 2018.8.5拼多多笔试题3———最亲密的非朋友

输入描述: 第一行:第一个表示用户数目N(N<100); 第二个数为需要判断的用户序号 第2至N+1行:表示序号为0到序号为N-1的每个用户的朋友序号列表,每个列表长度小于100 输出描述: 给定用户最可能认识的人的用户序号(定义为这个人和当前用户不是好友关系名单有最多的共同朋友。如果这种情况有多个,则返回序号最小的那个;如果没有,返回-1) 输入示例: 5 0 1 2 3 ...

2018-08-06 12:01:31 250

空空如也

空空如也

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

TA关注的人

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