
刷题
打工人呜呜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
tolower函数
tolower函数原创 2022-08-01 15:46:38 · 1148 阅读 · 0 评论 -
python如何输入输出链表
删除链表中重复元素原创 2022-07-11 14:45:54 · 2069 阅读 · 0 评论 -
算法工程师面经汇总
面经汇总原创 2022-06-25 22:13:14 · 1398 阅读 · 0 评论 -
leetcode-组合总数
总数之和原创 2022-06-15 14:54:50 · 1433 阅读 · 0 评论 -
leetcode48.旋转图像(中等)
第一种方法是auto一个临时的数组,然后操作。因为: class Solution { public: void rotate(vector<vector<int>>& matrix) { int n = matrix.size(); auto new_matrix = matrix; //auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。 for(int i=0;i<n;i++){ .原创 2022-02-19 11:22:49 · 423 阅读 · 0 评论 -
大数加法(中等)
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ string solve(string s, string t) { // write code h.原创 2022-02-13 22:35:15 · 6594 阅读 · 0 评论 -
leetcode53. 最大子数组和(简单)
这是个锤子的简单题, 一开始我用暴力解法写了一遍,双循环,但是有一个用例会超时,所以只能用动态规划来做: (答案当中还给了一个贪心,还没具体看) class Solution { public: int maxSubArray(vector<int>& nums) { int pre=0 , ans=nums[0]; for(const auto &x : nums){ pre = max( pre+x ,x );.原创 2022-02-10 22:01:29 · 208 阅读 · 0 评论 -
leetcode70.爬楼梯(简单)
题解的关键点就是f(x) = f(x-1) + f(x-2) 也就是说第x阶楼梯的种数 是 x-1 和 x-2 阶的总和。 class Solution { public: int climbStairs(int n) { // f(x) = f(x-1) + f(x-2) if(n==1 || n==2 || n==0){ return n; } int f[n+1]; f[0] = 0;原创 2022-02-10 21:12:24 · 283 阅读 · 0 评论 -
leetcode66.加一(简单)
本来想做个简单的题找找自信心,没想到把自己打击了。 这么简单的问题都不会。。。。 这个主要思想就是从后面进行遍历,遇到非9的就加一,然后后面的都变成0,如果全是9的话,就定义一个新的数组,变成10就好了。 class Solution { public: vector<int> plusOne(vector<int>& digits) { int n=digits.size(); for(int i=n-1; i>=0;i--){原创 2022-02-10 20:27:37 · 6578 阅读 · 0 评论 -
leetcode36.有效的数独(中等)
这个题用哈希表做就可以,用哈希表记录每个元素出现的次数,然后用vector定义三个99,99,339的数组。用于判断行,列,小九宫格内元素出现的次数。 class Solution { public: bool isValidSudoku(vector<vector<char>>& board) { vector<vector<int>> row(9,vector<int>(9)) ,col(9,vector<原创 2022-02-10 20:07:48 · 319 阅读 · 0 评论 -
leetcode33. 搜索旋转排序数组(二分查找)
上一个博客写的是暴力直接解出来了 官方答案给出的是二分查找,时间复杂度比较低: class Solution { public: int search(vector<int>& nums, int target) { int n = nums.size(); if(n == 0){ return -1; } if(n == 1){ return nums[0] == .原创 2022-02-06 18:55:49 · 672 阅读 · 0 评论 -
leetcode33.搜索旋转排序数组
题目看着吓唬人,其实很简单,实际上就是返回数组中特定数字的下标值就行 ,这是我唯一一个随便就写出来的中等题,继续加油! class Solution { public: int search(vector<int>& nums, int target) { int len = nums.size(); int ans = -1; for(int i=0; i<len; i++){ if(nums[i]原创 2022-02-06 17:52:09 · 646 阅读 · 0 评论 -
leetcode31.下一个排列
题目描述直接截图的leetcode 解题思路: c++代码如下所示 class Solution { public: void nextPermutation(vector<int>& nums) { int n = nums.size(); int i = n-2; while(i>=0 && nums[i]>=nums[i+1]){ i--; }原创 2022-01-28 11:24:58 · 826 阅读 · 0 评论 -
leetcode29.两数相除(中等)
两数相除: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 示例 1: 输入: dividend = 10, divisor = 3 输出: 3 解释: 10/3 = truncate(3.33333…) = trunca原创 2022-01-28 00:30:48 · 494 阅读 · 0 评论 -
leetcode24.两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode* dummy = new ListNode(0); // 0-> 1 -> 2 -> 3 ->4 // pre cur next d原创 2022-01-27 15:37:50 · 1008 阅读 · 0 评论 -
leetcode19.删除链表中的倒数第N个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { int len=0; ListNode* newOne = new ListNode(0,head); while(head) { head = head->next;原创 2022-01-26 21:33:19 · 553 阅读 · 0 评论 -
数字转罗马数字
继上一篇写的,又看到了一个比较简洁的方法: class Solution { public: string intToRoman(int num) { int values[]={1000,900,500,400,100,90,50,40,10,9,5,4,1}; string reps[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; string res;原创 2022-01-25 20:27:52 · 5669 阅读 · 0 评论 -
leetcode12. 整数转罗马数字(中等)
贴一个之前写的罗马数字转整数: https://blog.csdn.net/toCVer/article/details/122421123?spm=1001.2014.3001.5501 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M原创 2022-01-25 20:24:09 · 177 阅读 · 0 评论 -
leetcode17.电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = “23” 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 示例 2: 输入:digits = “” 输出:[] 示例 3: 输入:digits = “2” 输出:[“a”,“b”,“c”] 这个题需要用到哈希表和递归来做 class Solution {原创 2022-01-25 11:03:41 · 209 阅读 · 1 评论 -
leetcode22.括号生成-中等(递归)
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 这个题有好几种做法,这里介绍两种吧 ,这个题一开始我也不会做,看的答案,现在递归还是理解的不是很透彻,我是垃圾。 1.递归: class Solution { void backtracking(int n, int left, in原创 2022-01-20 21:09:18 · 506 阅读 · 0 评论 -
leetcode18.四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 <= a, b, c, d < n a、b、c 和 d 互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target 你可以按 任意顺序 返回答案 。 示例 1: 输入:nums = [1,0,-1原创 2022-01-19 15:48:40 · 104 阅读 · 0 评论 -
leetcode15.三数之和(中等)
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] 示例 2: 输入:nums = [] 输出:[] 示例 3: 输入:nums = [0] 输出:[] 一开始看到这个题的时候,思路是直接三个循环开始干,但是这种暴力解法的时间复杂度是n的三次原创 2022-01-17 15:56:29 · 152 阅读 · 0 评论 -
leetcode11.盛最多水的容器-(中等难度)
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 示例 2: 输入:height原创 2022-01-17 12:21:28 · 169 阅读 · 0 评论 -
leetcode8.字符串转换整数(atoi)(中等难度)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数(即,"123" -原创 2022-01-16 23:11:59 · 164 阅读 · 0 评论 -
整数反转(中等)
虽然写的难度中等,但是我感觉应该是简单 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 示例 4: 输入:x = 0 输出:0 class Solution { public:原创 2022-01-16 12:12:55 · 2098 阅读 · 0 评论 -
搜索插入位置(简单)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2 示例 2: 输入: nums = [1,3,5,6], target = 2 输出: 1 示例 3: 输入: nums = [1,3,5,6], target = 7 输出: 4 示例 4: 输入: nums = [1,3,5,6], target原创 2022-01-15 21:03:34 · 559 阅读 · 0 评论