C++
dsf
浆果吖
程序员
展开
-
栈元素的合理性
输入一序列的元素,判断另一列元素是否符合栈的“先进后出”性质#include<iostream> #include <assert.h> #include <stack> using namespace std; bool Check(int *stack_in, int *stack_out,int len_in,int len_out)...原创 2018-06-13 13:54:26 · 203 阅读 · 0 评论 -
BAT机器学习面试题系列集合
BAT机器学习1000题_70题BAT机器学习面试1000题_知乎专栏原创 2018-04-13 16:31:21 · 367 阅读 · 0 评论 -
c++函数库函数
1. __gcd(x, y)求两个数的最大公约数,如__gcd(6, 8) 就返回2。在 algorithm 库中。是不是很方便? 2. reverse(a + 1, a + n + 1)将数组中的元素反转。a 是数组名,n是长度,跟 sort 的用法一样。值得一提的是,对于字符型数组也同样适用。也在 algorithm 库中。 3. unique(a + 1, a + n...原创 2018-10-16 23:06:26 · 227 阅读 · 0 评论 -
排序算法-希尔排序(ShellSort)
/*对于一个int数组,请编写一个希尔排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]*/#include <iostream>#include <cstdlib>using namespace std;/*希尔排序*/void Sh...原创 2018-09-11 00:51:45 · 406 阅读 · 0 评论 -
排序算法-选择排序(SelectionSort)
/*对于一个int数组,请编写一个选择排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]*/#include <iostream>#include <cstdlib>using namespace std;int *SelectionSort(i...转载 2018-09-11 00:50:12 · 262 阅读 · 0 评论 -
排序算法-快速排序(QuickSort)
/*对于一个int数组,请编写一个归并排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]*/#include <iostream>#include <cstdlib>#include <ctime>#include <sta...转载 2018-09-11 00:48:07 · 283 阅读 · 0 评论 -
排序算法-插入排序(IntertionSort)
/*对于一个int数组,请编写一个插入排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]*/#include <iostream>#include <cstdlib>using namespace std;/*直接插入排序*/int *...转载 2018-09-11 00:46:23 · 237 阅读 · 0 评论 -
排序算法-冒泡排序(BubbleSort)
/*对于一个int数组,请编写一个冒泡排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]*/#include <iostream>#include <cstdlib>using namespace std;/*大数下沉 T(n)=O(n^...转载 2018-09-11 00:40:58 · 330 阅读 · 0 评论 -
红黑树-解析
作者:csdn: v_JULY_v1 初步了解红黑树2 经典算法研究系列:五、红黑树算法的实现与剖析3 红黑树的C实现完整源码4 一步一图一代码,一定要让你真正彻底明白红黑树5 大刀阔斧,抽丝剥茧:评红黑树系列文章6 红黑树从头至尾插入和删除结点的全程演示图7 红黑树的C++完整实现源码 ...转载 2018-08-29 14:48:41 · 130 阅读 · 0 评论 -
求01矩阵的最大面积
题目:给定一个整型矩阵map,其中的值只有0和1两种,求其中全是1的所有矩形区域中,最大的矩形区域为1的数量。输出: 6 思路:以每一行做切割,统计以当前行作为底的情况下,每个位置往上的连续1的数量,使用高度数组height来表示。 以第一行切割后,height = { 1,0,1,1}. 以第二行切割后,height = { 2,1,2...原创 2018-08-30 18:55:06 · 5405 阅读 · 1 评论 -
排序算法-哈希排序(HeapSort)
#include <iostream>#include <time.h>#include <cstdlib>#define N 10using namespace std;//声明建大顶堆函数void BuildMaxHeap(int * array);//声明堆排序函数void HeapSort(int * array);//声明调...原创 2018-09-11 00:53:01 · 5749 阅读 · 1 评论 -
排序算法-归并排序(MergePass)
/*对于一个int数组,请编写一个归并排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]*/#include <iostream>#include <cstdlib>#include <time.h>using namespac...原创 2018-09-11 00:54:36 · 1057 阅读 · 2 评论 -
leetcode 914. X of a Kind in a Deck of Cards
unordered_map可类比于Python中的字典。其实现使用了哈希表,可以以O(1)的时间复杂度访问到对应元素,但缺点是有较高的额外空间复杂度。与之对应,STL中的map对应的数据结构是红黑树,红黑树内的数据时有序的,在红黑树上查找的时间复杂度是O(logN),相对于unordered_map的查询速度有所下降,但额外空间开销减小。 class Solution {public: ...原创 2018-10-16 23:05:50 · 488 阅读 · 0 评论 -
leetcode 70. Climbing Stairs
class Solution {public: int climbStairs(int n) { //Fibonacci f(n)=f(n-1)+f(n+1) vector<int> step(n,0);//初始化n个值为0的元素 step[0]=1; step[1]=2; for(in...原创 2018-10-30 11:01:55 · 105 阅读 · 0 评论 -
STL容器的
1.vector初始化:1) 不带参数的构造函数初始化* 初始化一个size为0的vector vector<int> a;2) 带参数的构造函数初始化* 初始化size,但每个元素值为默认值 vector<int> abc(10); //初始化了10个默认值为0的元素* 初始化size,并且设置初始值 vector<int> ...原创 2018-10-30 10:27:57 · 96 阅读 · 0 评论 -
leetcode 103 Binary Tree Zigzag Level Order Traversal
原创 2018-10-31 12:33:09 · 104 阅读 · 0 评论 -
leetcode 415. Add Strings
原创 2018-10-31 12:29:15 · 117 阅读 · 0 评论 -
leetcode 226. Invert Binary Tree 左右反转二叉树
原创 2018-10-31 12:27:43 · 182 阅读 · 0 评论 -
leetcode 101. Symmetric Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; *...原创 2018-10-31 12:26:25 · 98 阅读 · 0 评论 -
leetcode 100 Same Tree 判断两个二叉树是否相等
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };...原创 2018-10-31 12:22:34 · 224 阅读 · 0 评论 -
leetcode 61. Rotate List 旋转链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode...原创 2018-10-31 10:45:20 · 134 阅读 · 0 评论 -
leetcode 35. Search Insert Position
二分查找插入: class Solution {public: int searchInsert(vector<int>& nums, int target) { int low=0; int high=nums.size(); while(low<high) ...原创 2018-10-20 13:17:06 · 91 阅读 · 0 评论 -
leetcode 21. Merge Two Sorted Lists 合并两条链表
递归合并: #include<iostream>#include <stdio.h>#include <stdlib.h>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};Li...原创 2018-10-19 17:47:58 · 115 阅读 · 0 评论 -
leetcode 20. Valid Parentheses 括号匹配
基于栈:#include<iostream>#include<stack>#include<string>using namespace std;class Solution {public: bool isValid(string s) { stack<char> S; for (int i = 0; i<s....原创 2018-10-19 16:37:52 · 127 阅读 · 0 评论 -
leetcode 7. Reverse Integer
int reverse(int x){ int result(0); while (x != 0){ if ((INT_MAX / 10) < result || (INT_MIN / 10) > result){ return 0; } result = result * 10 + x % 10; x = x / 10; } return...原创 2018-10-16 23:38:00 · 65 阅读 · 0 评论 -
C++中4个与类型转换相关的关键字(*_cast)
在C/C++语言中用 (type) value(在C++还可以采用type(value))来进行显式类型转换(explicit type conversion),常常又被称为强制转换(cast投射/铸模)。这种转换的正确性完全掌握在程序员手中,传统上强制转换往往被过度使用,成为C++程序犯错的一个主要根源。为了减少强制转换的副作用,并且在查错时使程序员能够快速定位(总是最值得怀疑的)强制转换,...转载 2018-08-01 12:11:12 · 230 阅读 · 0 评论 -
算法竞赛入门经典_C语言和C++比较
1.和C程序比较,stdio.h变成了cstdio。事实上,stdio.h仍然存在,但是C++中推荐的头文件是cstdio。类似地,string.h变成了cstring,math.h变成了 cmath,ctype.h变成了cctype。带.h后缀的头文件依然存在,但并不被C++所推荐使用。C++能编译大多数C语言程序。虽然C语言中大多数头文件在C++中仍然 可以使用,但推荐的方法是在C头文件之前加...原创 2018-05-26 22:09:01 · 1346 阅读 · 0 评论 -
算法竞赛入门经典_递归
递归函数:C++语言:#include<cstdio> int f(int n) { return n == 0 ? 1 : f(n-1)*n; } int main(){ cout<<f(3)<<endl; return 0; }原创 2018-05-26 21:48:28 · 164 阅读 · 0 评论 -
算法竞赛入门经典_两个数交换/计算数组和_指针的简单应用
问题:C++实现:C语言用调用栈(Call Stack)来描述函数之间的调用关系。调用栈由栈帧 (Stack Frame)组成,每个栈帧对应着一个未运行完的函数。#include<stdio.h>#include<iostream>using namespace std;void swap(int* a, int* b){ int t; t = *a; *...原创 2018-05-26 17:59:24 · 245 阅读 · 0 评论 -
算法竞赛入门经典_判断素数C++实现
题目:C++实现:#include<stdio.h>#include<iostream>#include<math.h>using namespace std;int is_prime(int n){ int m; if (n <= 1) return 0; m = floor(sqrt(n) + 0.5); //防止数据太大...原创 2018-05-26 17:11:09 · 241 阅读 · 0 评论 -
字符
件ctype.h中定义的isalpha、isdigit、isprint等工具可以用来判断字符的属性,而toupper、tolower等工具可以用来转换大小写。原创 2018-05-26 14:54:46 · 107 阅读 · 0 评论 -
算法竞赛入门经典_键盘字符输入问题C++实现
C++#include<stdio.h> char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./"; int main() { int i, c; while((c = getchar()) != EOF) //"c = getchar()"的返回值,把它和EOF进行比较 { for (...原创 2018-05-26 14:51:27 · 561 阅读 · 0 评论 -
算法竞赛入门经典_开灯问题
题目:C++:#include<stdio.h>#include<string.h> #include<iostream>#define maxn 1010 using namespace std;int a[maxn]; int main() { int n, k, first = 1; memset(a, 0, sizeof(a)...原创 2018-05-25 11:13:33 · 321 阅读 · 0 评论 -
《算法竞赛入门经典》7744问题(1)
输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)#include<stdio.h>#include<iostream>#include<math.h>using namespace std;int main(){ for (int a = 1; a <= 9; a++) for (int b = 0; b <...原创 2018-05-09 21:27:38 · 278 阅读 · 0 评论 -
Leetcode 1.Two Sum
Leetcode 1.Two SumProblem:Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add...原创 2017-12-07 11:41:23 · 161 阅读 · 0 评论 -
Leetcode 3. Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with原创 2017-12-08 18:50:19 · 151 阅读 · 0 评论 -
Leetcode 2. Add Two Numbers
Leetcode 2. Add Two NumbersYou are given two non-empty linked lists representing two non-negative integers. The digits are stored inreverse order and each of their nodes contain a single digit. Ad原创 2017-12-07 23:37:46 · 181 阅读 · 0 评论 -
算法导论-分治法-合并排序的Python&C++实现
分治法的精髓:分--将问题分解为规模更小的子问题;治--将这些规模更小的子问题逐个击破;合--将已解决的子问题合并,最终得出“母”问题的解; 分治模式每一层递归的三个步骤:分解(Divide):将原问题分解成一系列子问题;解决(Conquer):递归的解各个子问题。若子问题足够小,直接求解;合并(Combine):将子问题的结果合并成原问题的解。原创 2017-09-18 17:09:24 · 1082 阅读 · 0 评论 -
算法导论-排序的Python&C++简单实现
引自《算法导论》:==============================================#includeusing namespace std;int main(){ int A[10]; cout for (int i = 1; i { cin >> A[i]; } int key,k; for (in原创 2017-09-14 20:56:55 · 235 阅读 · 0 评论 -
《算法竞赛入门经典》阶乘之和(2)
#include<stdio.h>#include<time.h>#include<iostream>using namespace std;int main(){ const int MOD = 1000000; int n,S = 0, f = 1; cin >> n; for (int i = 1; i <= n; ...原创 2018-05-23 11:01:39 · 199 阅读 · 0 评论