- 博客(10)
- 资源 (8)
- 收藏
- 关注
原创 【剑指Offer——待进一步理解】 44. 数字序列中某一位的数字
代码class Solution {public: int findNthDigit(int n) { int digit = 1; long start = 1; long count = 9; while (n > count) { n -= count; digit += 1; start *= 10; count = digit * start * 9; } long num = start + (n - 1) / digit; ret
2020-07-19 17:35:16 117
原创 【剑指offer】46. 把数字翻译成字符串
解题思路第一步:定义数组元素的含义题目要求的是一个数字有多少种不同的翻译方法,因此设dp[i]代表第i个结尾的数字的翻译方案数量第二步:找出关系数组元素间的关系式若xix_{i}xi和xi−1x_{i-1}xi−1组成的数字可以被翻译,则dp[i]=dp[i-1]+dp[i-2],xi−1xiϵ[10,25]x_{i-1}x_{i}\epsilon [10,25]xi−1xiϵ[10,25];否则dp[i]=dp[i-1],xi−1xiϵ[1,10)∪(25,99]x_{i-1}x_{i
2020-07-19 16:47:56 151
原创 【剑指offer】45. 把数组排成最小的数
解题思路通过题意可知,不管这些数字如何排列,形成的数字位数时不变的。所以如果高位的数字越小,则最终的结果也就越小。下面的n为数字的个数对于n=2的情况如[26,38],根据高位越小越好,可知,我们应该排列成2638对于n>2的情况如[26,29,1],根据我们定义的规则,一定是将第一位小的数字放在最高位,因此先选出1,对于剩下两个数字,由于第1位数字相同,我们会比较第2位,因此我们最终会排列成12629从上面我们可以发现的排序规则就是,如果第1位小,就将其排到最前面,如果第1位相等,则比
2020-07-19 15:18:36 189
原创 【LeetCode】215. 数组中的第K个最大元素
解题思路方法一使用快速排序中的Partition函数,获得第j位上的元素,如果第j位和k-1相同,则直接返回即可时间复杂度O(N)代码#include<vector>class Solution {public: int findKthLargest(std::vector<int>& nums, int k) { int start = 0; int end = nums.size() - 1; int
2020-07-15 15:50:28 175
原创 【剑指offer】36. 二叉搜索树与双向链表
思路算法流程:Node* treeToDoublyList(Node* root)1.特例处理:若结点root为空,直接返回2.转化为排序双向链表:调用inorder(Node* root)3.构建循环链表:head和pre双向结点引用4.返回头结点void inorder(Node* root)中序遍历的改写,在访问根节点时,同时更新pre,head的值,使其能够双向连接代码class Solution {public: Node* pre=nullptr, *head;//
2020-07-10 11:45:31 167
原创 【剑指offer】35. 复杂链表的复制
解题思路算法流程:建立映射对新链表结点和原链表结点建立hashmap的映射关系,原链表结点为key,新链表结点为value赋值通过hashmap将原链表的next,random所指结点赋给新链表,注意赋值时,要判断该两值是否不为空,因为建立hashmap时,没有建立null,null的映射返回新链表头结点hashmap[head]代码class Solution {public: Node* copyRandomList(Node* head) {
2020-07-10 10:44:38 139
原创 【剑指offer】33. 二叉搜索树的后序遍历序列
思路1.确定根节点2.遍历序列(除去root结点),找到第一个大于root的位置,则该位置左边为左子树,右边为右子树3.遍历右子树,若发现有小于root的值,则直接返回false;4.分别判断左子树和右子树是否仍是二叉搜索树(即递归步骤1、2、3)代码class Solution {public: bool verifyPostorder(vector<int>& postorder) { if (postorder.empty()) return
2020-07-09 19:39:31 265
原创 【数据结构与算法】二叉树的遍历方法总结
先序遍历递归版非递归版中序遍历递归版非递归版后序遍历递归版非递归版层序遍历#include<iostream>#include<queue>#include<vector>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NU
2020-07-09 15:44:58 191
原创 【剑指offer】31. 栈的压入、弹出序列
解题思路算法流程:初始化,辅助栈tempS和弹出序列的索引i遍历压入序列pushed压入pushed的元素e判断tempS是否为空且栈顶元素和popped[i]相等tempS出栈i++3.返回tempS.empty(),如果其为空,说明合法,反之不合法代码class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>&
2020-07-09 15:14:52 132
原创 【剑指offer】21. 调整数组顺序使奇数位于偶数前面
解题思路双指针,p1指向头,p2指向尾,p1在遇到偶数时停下,p2在遇到奇数时停下,如果此时p1<p2,则进行交换代码class Solution {public: vector<int> exchange(vector<int>& nums) { int p1 = 0, p2 = nums.size() - 1; while (p1<p2) { while (p1 <
2020-07-07 10:55:43 121
【OpenGL】三维场景漫游.zip
2020-05-12
【OpenGL】机器人手臂的实现.zip
2020-05-12
【OpenGL】光照太阳系.zip
2020-05-12
OpenGL+C++太阳系实现.zip
2020-03-22
MessageQueue.zip
2019-11-06
BoW(Bag of Words)词袋模型.zip
2019-11-05
alibaba_java_开发手册.pdf
2019-09-24
区块链:技术驱动金融 - [美] 阿尔文德·纳拉亚南 & 约什·贝努等
2019-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人