
刷题
打工人呜呜
这个作者很懒,什么都没留下…
展开
-
tolower函数
tolower函数原创 2022-08-01 15:46:38 · 1102 阅读 · 0 评论 -
python如何输入输出链表
删除链表中重复元素原创 2022-07-11 14:45:54 · 2035 阅读 · 0 评论 -
算法工程师面经汇总
面经汇总原创 2022-06-25 22:13:14 · 1365 阅读 · 0 评论 -
leetcode-组合总数
总数之和原创 2022-06-15 14:54:50 · 1416 阅读 · 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 · 401 阅读 · 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 · 6571 阅读 · 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 · 192 阅读 · 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 · 270 阅读 · 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 · 6565 阅读 · 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 · 305 阅读 · 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 · 658 阅读 · 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 · 630 阅读 · 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 · 815 阅读 · 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 · 474 阅读 · 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 · 994 阅读 · 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 · 541 阅读 · 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 · 5652 阅读 · 0 评论 -
leetcode12. 整数转罗马数字(中等)
贴一个之前写的罗马数字转整数:https://blog.youkuaiyun.com/toCVer/article/details/122421123?spm=1001.2014.3001.5501罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M原创 2022-01-25 20:24:09 · 164 阅读 · 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 · 194 阅读 · 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 · 490 阅读 · 0 评论 -
leetcode18.四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d < na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。示例 1:输入:nums = [1,0,-1原创 2022-01-19 15:48:40 · 92 阅读 · 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 · 137 阅读 · 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 · 157 阅读 · 0 评论 -
leetcode8.字符串转换整数(atoi)(中等难度)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,"123" -原创 2022-01-16 23:11:59 · 147 阅读 · 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输出:0class Solution {public:原创 2022-01-16 12:12:55 · 2087 阅读 · 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 · 547 阅读 · 0 评论