算法题
一些算法题而已
Danifer
这个作者很懒,什么都没留下…
展开
-
括号匹配
class Solution { public: vector<string> generateParenthesis(int n) { vector<string> ans; if(n == 0) return ans; Solve("",n,n,ans); return ans; } void Solve(string cur,int l,int r,vector<st原创 2021-03-09 14:41:51 · 90 阅读 · 0 评论 -
快排
#include<iostream> #include<vector> using namespace std; void quickSort(vector<int>& nums, int begin, int end) { if (begin < end){ int i = begin, j = end, key = nums[begin]; while (i < j) { while (i < j &&原创 2021-03-09 14:40:05 · 116 阅读 · 0 评论 -
offer50.第一次只出现一次的字符
class Solution { public: char firstUniqChar(string s) { int count[256] = {0}; for(auto e : s){ count[e]++; } for(int i = 0;i < s.size();++i){ if(count[s[i]] == 1){ retu原创 2021-03-09 14:38:58 · 88 阅读 · 0 评论 -
合并两个有序链表
#include<iostream> using namespace std; struct list_node { int val; struct list_node* next; }; list_node* input_list() { int n, val; list_node* phead = new list_node(); list_node* cur_pnode = phead; cin >> n; for (原创 2021-03-09 14:37:32 · 59 阅读 · 0 评论 -
反向打印链表
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { /原创 2021-03-09 14:36:39 · 60 阅读 · 0 评论 -
lc230.二叉树中搜索第K小的元素
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *原创 2021-03-09 14:34:18 · 83 阅读 · 0 评论 -
二叉树遍历
/* 问题:二叉树的先、中、后序非递归遍历 先序遍历非递归: 1、借助栈,先将根入栈 2、弹出栈顶并打印,然后将其右孩子**入栈(若有的话) 3、然后左孩子**入栈 (若有的话) 4、然后回到2 中序遍历非递归: 1、借助栈,将整个树的左边界**一次入栈(root=root->left) 2、若root为空,则弹出栈顶node并打印,另root=node.right,然后重复1 3、直到栈为空或root为空,结束 后序遍历(借助两个栈)***: 1、栈s1,初始值为根 2、弹出原创 2021-03-09 14:32:51 · 63 阅读 · 0 评论 -
lc17.电话号码的字码组合
题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = “23” 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 示例 2: 输入:digits = “” 输出:[] 示例 3: 输入:digits = “2” 输出:[“a”,“b”,“c”] 提示: 0 <= digits.length <原创 2021-03-09 14:30:49 · 110 阅读 · 0 评论 -
offer22.打印链表的倒数第K个节点
题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kg原创 2021-03-09 14:27:34 · 82 阅读 · 0 评论 -
插入排序
插入排序: 流程:进行遍历,从下标为1的元素开始,对每一个元素进行排序,记录v[i]为cur, pos = i-1;将cur插入到前i个元素中, 插入流程: 将v[pos+1] = v[pos];将v[pos]和cur进行比较. pos–; 1)记录当前位置数据 2)腾出位置来将当前位置的数据插入 #include <iostream> #include <vector> using namespace std; int main(){ int a[] = {4,2,5,原创 2021-03-09 14:19:52 · 53 阅读 · 0 评论 -
已知某个哈希表的n个关键字具有相同的哈希值,如果使用二次探测再散列法将这n个关键字存入哈希表, 至少要进行____次探测。
已知某个哈希表的n个关键字具有相同的哈希值,如果使用二次探测再散列法将这n个关键字存入哈希表, 至少要进行____次探测。 插入: 第一个元素 探测1次 第二个元素 探测2次 第三个元素 探测3次 。。。。。。 第N个元素 探测N次 就一共有(N+1)N / 2 次探测 ...原创 2020-09-09 17:18:14 · 703 阅读 · 0 评论