随笔分类 -  编程题-刷题 / 力扣

摘要:其实叫“N 字形变换”更形象 第一版代码,在二维数组中模拟打印过程,但是时间和空间效率都很差,都是 n2 string convert(string s, int numRows) { int len = s.size(); // 如果只有一行或者只有一列则直接输出 if (numRows == 1 阅读全文
posted @ 2024-08-03 10:43 YaosGHC 阅读(7) 评论(0) 推荐(0) 编辑
摘要:思路是模拟从低位到高位的按位相加,需要考虑进位 public String addStrings(String num1, String num2) { int bitLen1 = num1.length() - 1, bitLen2 = num2.length() - 1; StringBuild 阅读全文
posted @ 2024-07-27 20:23 YaosGHC 阅读(6) 评论(0) 推荐(0) 编辑
摘要:public boolean checkPerfectNumber(int num) { int sum = 0; for (int i = 1; i <= num / 2; i++) if (num % i == 0) sum += i; return sum == num; } 阅读全文
posted @ 2024-07-27 19:47 YaosGHC 阅读(8) 评论(0) 推荐(0) 编辑
摘要:华硕科技的面试手写算法题,我没见过,分析出了思路但是没把握写出来能过,于是挂了 string convertToTitle(int columnNumber) { // 计算会有几位长度 long long temp = 26; int len = 1; while (columnNumber > 阅读全文
posted @ 2023-10-17 15:13 YaosGHC 阅读(21) 评论(0) 推荐(0) 编辑
摘要:书上给出的第一个方法是用两个栈,将两个链表的节点依次入栈,然后出栈就相当于从后往前遍历了,这样只需要找到最后一个相同的链表节点 同样应该也可以使用内存栈,也就是递归来实现这一过程 第二种思路不需要额外的空间,而是先分别遍历两个链表得到链表的长度,然后让较长的链表指针将差值走掉,最后就可以同步遍历,第 阅读全文
posted @ 2023-09-05 14:58 YaosGHC 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目要求`O(log (m+n))`的时间复杂度 知道了两个数组的长度,那么中位数的下标以及如何计算是可以确定的,给出的是两个正序数组,如果使用双指针,从两个数组头开始扫描并比较,找出合并后第 K 小的数字,时间复杂度是多少? 时间复杂度是`O((M+N)/2)`,这个目标还不及题目的要求,看到`l 阅读全文
posted @ 2023-08-20 14:18 YaosGHC 阅读(18) 评论(0) 推荐(0) 编辑
摘要:可以使用栈,将每个单词(字符串)压栈,然后弹栈就 OK 了 好吧,实际写下来考虑到可能存在的多余空格问题,代码看起来并不简介,而且写之前就很明显直到需要最差额外 n 的空间,时间复杂度最差 2n,所以都不算好 思路是压栈的时候只压单词本身,弹栈的时候再去拼空格 ```c++ string rever 阅读全文
posted @ 2023-08-13 02:27 YaosGHC 阅读(11) 评论(0) 推荐(0) 编辑
摘要:/* * 思路是这样: * 遍历每一个单位点,如果遇到陆地就开始dfs并计岛屿面积:将与这个陆地相连的所有陆地标记为0 * 最后返回面积的最大值 */ private: int maxSize = 0,count = 0; public: void dfs(vector<vector<int>>& 阅读全文
posted @ 2023-04-09 03:00 YaosGHC 阅读(18) 评论(0) 推荐(0) 编辑
摘要:我尝试使用昨天猫鼠游戏的思路来解决这个博弈问题,也就是DFS private: int alice, bob;// 用来分别计数两人手上的石子数量 public: bool dfs(vector<int>& piles, int start, int end, bool firstTurn) { / 阅读全文
posted @ 2023-04-07 17:34 YaosGHC 阅读(22) 评论(0) 推荐(0) 编辑
摘要:直达链接 之前我写过一次IP地址转二进制 好吧,读完题发现好像和这题没什么关系 给一串数字中加.,返回所有的能够构成合法IP地址的结果 有点回溯的味道,但是却又和之前的排列组合不太一样: 其实相当于划分4个空往里填数字,但是这里每个空中的数字长度是不确定的 填入数字是会有额外的两个条件限制 尝试了但 阅读全文
posted @ 2023-04-06 21:43 YaosGHC 阅读(16) 评论(0) 推荐(0) 编辑
摘要:就是二叉树的层序遍历,我记得这题,~~用栈~~用队列,然后有个关键的size() Ⅰ vector<int> levelOrder(TreeNode* root) { vector<int> res; if (!root) return res; queue<TreeNode*> temp; tem 阅读全文
posted @ 2023-02-09 22:26 YaosGHC 阅读(16) 评论(0) 推荐(0) 编辑
摘要:返回“第一个”,怎么才能说是第一个? 首先要确定它只出现一次,其次还得是第一个满足以上条件的 哦,只包含小写字母是吧,那容易啊 至少需要一次遍历才能确定一个字母是不是只出现了一次,那有没有可能在这次遍历中就保存下来第一个呢 我一下子竟然想不出来怎么做 确切地说是自动屏蔽了那些看起来时间、空间不够好的 阅读全文
posted @ 2023-02-08 17:50 YaosGHC 阅读(21) 评论(0) 推荐(0) 编辑
摘要:最直接的做法,像冒泡那样两两比较,第一个逆序就是答案 int minArray(vector<int>& numbers) { int res = numbers[0]; for (int i = 1; i < numbers.size(); i++) { if (numbers[i - 1] > 阅读全文
posted @ 2023-02-07 16:17 YaosGHC 阅读(16) 评论(0) 推荐(0) 编辑
摘要:从最后一列的第一个数字开始比较,依次倒数第二列第一个数字、倒数第三列... 找到第一个 <= target 的数字,这样可以将范围缩小到一列 然后用二分查找快速判断目标元素有没有 好吧为了方便我还是横着来 bool findNumberIn2DArray(vector<vector<int>>& m 阅读全文
posted @ 2023-02-06 14:31 YaosGHC 阅读(16) 评论(0) 推荐(0) 编辑
摘要:与复制普通链表的区别在于:多出了一个随机指针 我们考虑下复制一个普通链表: 遍历并复制节点i,让构造的他的上一个节点指向i 看起来只需要2个指针,指针1指向当前构造的节点,指针2指向构造的上一个节点 这两个指针应该是指向的原链表 但是所谓的复杂链表复制,麻烦的点就在于:随机指针指向的是不确定的位置 阅读全文
posted @ 2023-02-04 19:27 YaosGHC 阅读(22) 评论(0) 推荐(0) 编辑
摘要:这个删除重复不太常规的是:它不是删除多出来的剩下一个,而是比如有三个1,1重复了,那这三个1节点都不要 ListNode* deleteDuplicates(ListNode* head) { if (!head) return head;// 空链表直接返回 // 虚拟头指针避免空头问题 List 阅读全文
posted @ 2023-01-29 14:29 YaosGHC 阅读(20) 评论(0) 推荐(0) 编辑
摘要:自行实现某个数学函数…我记得《剑指Offer》也有这种题 第一想法是从0开始,看i*i和x的大小比较,如果i*i<x && (i+1)*(i+1)>x那就是答案 但是这样很明显时间复杂度太高了,如果x很大,一个一个i*i地算肯定会超时 于是就有了经典的 二分查找 好吧一下子我还不知道怎么写😂 官解 阅读全文
posted @ 2023-01-29 12:54 YaosGHC 阅读(20) 评论(0) 推荐(0) 编辑
摘要:好吧,上一题排序的思路其实是这一题的…🤔那怕不是57还有更好的做法?! 这题好像没说原数组是排了序的 嗯?这题我做过?我还是喜欢自己想出来的代码思路 vector<vector<int>> merge(vector<vector<int>>& intervals) { vector<vector< 阅读全文
posted @ 2023-01-29 10:50 YaosGHC 阅读(26) 评论(0) 推荐(0) 编辑
摘要:采用最直接的思路,if-else去考虑每一种情况并做出操作(比如找到新区间左端点落在哪个位置,几种情况,然后再去考虑右端点的几种情况)是非常细致繁琐的,以至于很容易出错 考虑三种情况,新区间的两个端点: 分别落在两个原有的区间中:保留前一个区间的左端点和后一个区间的右端点,将他俩合并成一个新的区间 阅读全文
posted @ 2023-01-29 10:40 YaosGHC 阅读(21) 评论(0) 推荐(0) 编辑
摘要:class NumMatrix { private: vector<vector<int>> prefixSum; public: NumMatrix(vector<vector<int>>& matrix) { int n = matrix.size(); int m = matrix[0].si 阅读全文
posted @ 2022-12-24 14:28 YaosGHC 阅读(12) 评论(0) 推荐(0) 编辑

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