08 2022 档案

摘要:今天做美团笔试,第二题就,题目大概是:对于一串n个数字:1,2…n,给一串操作,每次把指定的数字移动到最左边(最前面),输出最后的结果 很明显,最直接的想法肯定就是模拟一个链表,每次把链表中的指定节点移动到链表头的位置 看起来这是很简单基础的对吧 但事实上自己做起来却是如此的不熟练,让我觉得其实自己 阅读全文
posted @ 2022-08-27 22:42 YaosGHC 阅读(16) 评论(0) 推荐(0) 编辑
摘要:直达链接 前两天刚做了~~梦开始的地方~~两数之和 常规思路是二层遍历,对于每个数都去遍历数组找有没有刚好能凑成指定数字的 进阶思路是使用hashmap,一次遍历,对于每个元素去看hahsmap里有没有能凑成一对的,有就直接返回(因为题设答案唯一),没有就插到hashmap里面去(键为值,值为索引位 阅读全文
posted @ 2022-08-17 23:17 YaosGHC 阅读(23) 评论(0) 推荐(0) 编辑
摘要:约瑟夫环问题 已知 n 个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为 k 的人开始报数,数到 m 的那个人出圈;他的下一个人又从 1 开始报数,数到 m 的那个人又出圈;依此规律重复下去,直到剩余最后一个胜利者。 递归 假设f(n,m)代表从长度为n的序列中,循环数到m就划掉,最 阅读全文
posted @ 2022-08-16 15:05 YaosGHC 阅读(17) 评论(0) 推荐(0) 编辑
摘要:本来觉得很简单,然后准备提交了发现要在数组1里面合并,没有额外空间 然后就有了一个大胆的想法——我直接插进去然后sort class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 阅读全文
posted @ 2022-08-15 17:23 YaosGHC 阅读(25) 评论(0) 推荐(0) 编辑
摘要:如果将所有区间按照左端点进行排序,那么能够合并的区间一定是连续的 class Solution { public: int randomInRange(int start, int end) { srand(time(NULL)); return rand() % (end - start + 1) 阅读全文
posted @ 2022-08-15 16:42 YaosGHC 阅读(92) 评论(0) 推荐(0) 编辑
摘要:回过头来做第一题 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> map; // 遍历数组元素,如果hashmap中存在可以凑成target的数就 阅读全文
posted @ 2022-08-12 15:28 YaosGHC 阅读(16) 评论(0) 推荐(0) 编辑
摘要:参考链接 堆排序 概述 堆排序是利用 堆 这种数据结构进行排序的一种排序算法,堆排序是一种选择排序(每次选出序列中 最大 / 最小 元素) 它的最好和最坏时间复杂度都是O(n logN) 升序->大顶堆 降序->小顶堆 堆 堆是具有以下性质的完全二叉树: 因为是完全二叉树,所以可以映射为一个一维数组 阅读全文
posted @ 2022-08-11 15:34 YaosGHC 阅读(33) 评论(0) 推荐(0) 编辑
摘要:给定一个长度为n的任意序列 可能有重复 转换为正则序列 只包含n个元素 序列中元素范围都在[1,n] 不存在重复元素 要求: 通过加一/减一操作转换 步数最小 对于一个小于1的数 只能做+操作 当前数组中1是否存在?存在就加到1, 不存在,1+1=2是否存在?存在就加到2,以此类推 对于一个大于n的 阅读全文
posted @ 2022-08-11 11:57 YaosGHC 阅读(52) 评论(0) 推荐(0) 编辑
摘要:直达链接 与打家劫舍的区别在于,打家劫舍原题是数组,这里是二叉树 而且这里只能由根节点开始 回顾一下之前的思路,看有什么异同、是否还适用 访问任意节点,当前节点可获得最大价值为: 不要当前节点值,那么收益便是:截至上一个节点的值(上一个节点?!这里只能知道子节点不能知道父节点) 要当前值,那么获得的 阅读全文
posted @ 2022-08-08 16:17 YaosGHC 阅读(26) 评论(0) 推荐(0) 编辑
摘要:直达链接 跟以往的回溯不太一样的是: 这里的出口条件不再是数组长度,而是数组元素和 参数数组中的元素可以被无限制重复选取 class Solution { public: void backtrack(vector<vector<int>>& ret, vector<int>& candidates 阅读全文
posted @ 2022-08-08 15:44 YaosGHC 阅读(27) 评论(0) 推荐(0) 编辑
摘要:直达链接 之前好像也有一道括号的题,力扣-20-有效的括号,给的标签是“栈”,不过这次的标签是“动态规划”和“回溯法”了 返回所有可能结果,一看就是回溯了,但是我好像一直没完全搞明白过 class Solution { public: void backtrack(vector<string>& a 阅读全文
posted @ 2022-08-08 14:24 YaosGHC 阅读(21) 评论(0) 推荐(0) 编辑
摘要:直达链接 想到了连续子数组的最大和 自己想 我本来想倒着推,有点像mari和shiny,但是不对 class Solution { public: int lengthOfLIS(vector<int>& nums) { int length = nums.size(); if (length < 阅读全文
posted @ 2022-08-07 16:51 YaosGHC 阅读(31) 评论(0) 推荐(0) 编辑
摘要:直达链接 旋转数组,想到了剑指Offer-11-旋转数组的最小值 最朴素的想法肯定是,把数组恢复,但是如果这里恢复了,目标值的位置就会变化,达不到要求 如果不恢复,就没法使用二分查找,题目中要求的时间复杂度为O(log n) 评论区提醒: 将数组一分为二,因为旋转后的数组是由两个有序部分组成的,所以 阅读全文
posted @ 2022-08-05 14:49 YaosGHC 阅读(19) 评论(0) 推荐(0) 编辑
摘要:给定一个“非递减顺序排列”,就是说包含了重复元素的递增序列 class Solution { public: int binarySearch(vector<int>& nums, int target, bool lower) { int left = 0; int right = nums.si 阅读全文
posted @ 2022-08-04 13:43 YaosGHC 阅读(24) 评论(0) 推荐(0) 编辑
摘要:直达链接 猛然发现我做过了,3月4号 回顾前段时间面试的经历,感觉二分查找的出现概率挺大 当然,也大概是因为都是些小公司,考察的还是很基础的算法 写一篇总结一下 二分查找 条件 必须是有序序列 因为是每次与“中间值”相比较,这个“中间值”既是序列位置的中间值,也是数值大小的中间值 存储在数组中 实现 阅读全文
posted @ 2022-08-03 10:27 YaosGHC 阅读(15) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
🚀
回顶
收起