- 博客(7)
- 收藏
- 关注
原创 leetcode 60.第k个排列
一开始想错了,以为每个数字为首的排列有n-i-1个,坑死了,做半天不对,想清楚应该除以阶乘。比如4个数那么每个数开头的排列有3!个而不是3个。 class Solution { public: string getPermutation(int n, int k) { int stepMultip=1; string res; string s; ...
2020-04-08 18:20:56
68
原创 回溯法 leetcode 46.全排列 & 47.全排列II
做法1: class Solution { private: vector<vector<int>> res; vector<int> group; public: void dfs(vector<int>& v){ if(v.size()==0){//计入结果的条件 re...
2020-04-08 10:49:55
74
原创 Leetcode 40 dfs+剪枝 组合总数
关于回溯法 在刷题时看到有大神总结的回溯格式感觉很好: void dfs(路径,选择列表){ if(满足结束条件){ 将这种路径添加到最终结果中; return; } for(循环遍历列表中的每一个数 ){ 做选择; dfs(路径,选择列表); 撤销选择; } } 理解一下,在每次for循环回来开始下一次循环,是同级内的选择,所以在每次循环前需要撤销本次选择以开始下次循环。而在每次循环中再次调用整...
2020-04-07 10:38:14
127
原创 C++ 字符串string相关
字符串1.字符串初始化2.字符串的一些函数 1.字符串初始化 因为C++中本来是没有string这种数据类型的,可以将其看作是char类型的数组。 (1)char s1[11]=“hello world”;//有内容的 (2)char s2[11];//没有内容的 但是C++标准库中提供的有string类,是char*的类。所以也可这样: (1)string s1=“hello world”; (...
2020-04-06 18:31:23
94
原创 Leetode 二分查找 81. 搜索旋转排序数组 II
题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 示例 1: 输入: nums = [2,5,6,0,0,1,2], target = 0 输出: true 示例 2: 输入: nums = [...
2020-04-05 10:42:23
79
原创 二分法 leetcode 33.搜索旋转排序数组
33. 搜索旋转排序数组题目描述解答 题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 示例 1: 输入: nums...
2020-04-05 08:18:45
90
原创 堆栈
堆栈的相关概念常用语法 概念 堆栈是一种数据按序排列的结构,只能在栈顶(top)进行增添和删除。 常用语法 入栈,如例:s.push(x); 出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。 访问栈顶,如例:s.top() 判断栈空,如例:s.empty(),当栈空时,返回true。 访问栈中的元素个数,如例:s.size()。 ...
2020-03-30 19:11:05
68
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人