![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
HulkHaoke
实践性幻想狂
展开
-
回溯法求和为n的k个数
回溯法原创 2019-07-18 13:54:43 · 697 阅读 · 0 评论 -
根据层次遍历重建完全二叉树
#include<iostream>#include<vector>#include<math.h>using namespace std;struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(...原创 2019-09-09 22:38:19 · 1179 阅读 · 0 评论 -
链表环的相关题目
判断链表是否有环可用快慢指针的方法来判断。慢指针每走一步,快指针走两步,若两者能够相遇则有环。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {...原创 2019-09-08 13:01:40 · 155 阅读 · 0 评论 -
删除链表倒数第k个节点
此题要注意的是,需要预先建立一个下一个元素指向head的链表,同时本题返回值也是该链表的下一个元素而不能直接返回head。如:链表为 [1] 时,删除倒数第一个节点,应得空链表,如果返回head,则会输出 [1],即第一个节点的值。/** * Definition for singly-linked list. * struct ListNode { * int val; * ...原创 2019-09-07 06:34:13 · 111 阅读 · 0 评论 -
反转链表
反转链表难处在三指针滑动的逻辑,可参考博文:图解反转单向链表/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pH...原创 2019-09-07 04:33:24 · 96 阅读 · 0 评论 -
n个数中选m个数组合
#include<iostream>#include<vector>using namespace std;void GetCombinations(int n,int m,vector<int> &result){ if(m==0) { for(auto x:result) cout&l...原创 2019-09-06 20:01:40 · 549 阅读 · 0 评论 -
二叉树的重建
#include<iostream>#include<vector>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NU...原创 2019-09-06 14:41:41 · 88 阅读 · 0 评论 -
Top-K问题之堆排序
堆排序可将top-k时间复杂度降到O(n*logk)。#include<iostream>#include<vector>using namespace std; // 递归方式构建大根堆(len是arr的长度,index是第一个非叶子节点的下标)void adjust(vector<int> &arr, int len, int index...原创 2019-09-03 02:45:53 · 210 阅读 · 0 评论 -
24点程序记录
#include<iostream>#include<vector>using namespace std;bool is24(vector<double> a, int tot, double result){ if(a.empty()) { return result==tot; } for(int i...原创 2019-08-29 16:53:47 · 262 阅读 · 0 评论 -
爬楼梯问题以及硬币问题
爬楼梯问题为:有三种爬楼梯方式,你可以一次上1个台阶,可以一次上2个台阶,也可以一次上3个台阶。问对于一个100级台阶,有多种爬楼梯方法?硬币问题为:现有1分、2分、5分硬币,问有多少种方法凑出1元钱?乍看这两道题很相似,其实爬楼梯问题为排列问题,而硬币问题为组合问题。如:4个台阶可由 [ 1 1 1 1 ] [ 1 1 2 ] [ 1 2 1] [ 2 1 1] [ 2 2 ] 组成;4...原创 2019-08-29 15:00:42 · 415 阅读 · 0 评论 -
01背包问题
原始状态转移式为:f[i][j]=max(f[i][j],f[i-1][j-w[i]+v[i])i表示是否放入第i个物品,j表示此时背包已占有容量。max()第一个参数表示背包已满,放不下第i个物品,第二个参数表示背包正好能容纳第i个物品。由于不放入第i个物品时,背包总价值等于上一个状态,即放与不放第i-1个物品的最大值。由此可得:if(不放第i个物品) f[i][j]=f[i-1]...原创 2019-08-29 01:35:45 · 121 阅读 · 0 评论 -
栈进栈出 - 逆波兰表示法计算包含括号的四则运算
华为面试时被问到如何计算包含括号的四则运算,现在做一个规范总结。#include <iostream>#include <vector>#include <stack>using namespace std;vector<char> CovToPol(const vector<char> &str){ sta...原创 2019-08-28 13:53:23 · 317 阅读 · 0 评论 -
字节跳动提前批后端开发工程师一面
本次面试内容主要包括C++基础知识、操作系统、计算机网络、数据结构与算法。这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富...原创 2019-07-16 11:35:57 · 966 阅读 · 0 评论 -
二叉树的层次遍历
二叉树的层次遍历主要用到了队列。先将根节点放入队列,节点出队,打印节点若该节点有子节点,则子节点入队队首出队,打印节点,若该节点有子节点,则子节点入队,直到队列为空void Level(TreeNode* root){ queue<TreeNode*> q; if(root==NULL) return; q.push(root);...原创 2019-09-09 23:30:56 · 205 阅读 · 0 评论