
算法题
一些算法题而已
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 · 116 阅读 · 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 · 142 阅读 · 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 · 117 阅读 · 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 · 88 阅读 · 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 · 82 阅读 · 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 · 105 阅读 · 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 · 79 阅读 · 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 · 132 阅读 · 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 · 107 阅读 · 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 · 74 阅读 · 0 评论 -
已知某个哈希表的n个关键字具有相同的哈希值,如果使用二次探测再散列法将这n个关键字存入哈希表, 至少要进行____次探测。
已知某个哈希表的n个关键字具有相同的哈希值,如果使用二次探测再散列法将这n个关键字存入哈希表,至少要进行____次探测。插入:第一个元素 探测1次第二个元素 探测2次第三个元素 探测3次。。。。。。第N个元素 探测N次就一共有(N+1)N / 2 次探测...原创 2020-09-09 17:18:14 · 738 阅读 · 0 评论