代码算法练习
代码算法冲冲冲
阿柠xn
纵然疾风起,人生不言弃。
展开
-
【leetcode】27. 移除元素
题目描述代码class Solution {public: int removeElement(vector<int>& nums, int val) { int n = nums.size();//双指针,最后left指的地方就是长度,left指向下一个要赋值的地方。 int left = 0; for (int right = 0; right < n; right++) { if (num原创 2022-03-18 09:22:52 · 749 阅读 · 0 评论 -
【leetcode】16. 最接近的三数之和
题目描述代码class Solution {public: int threeSumClosest(vector<int>& nums, int target) {// 排序,遍历,内部双指针 sort(nums.begin(),nums.end()); int closestNum = nums[0] + nums[1] + nums[2]; for (int i = 0; i < nums.size() - 2;原创 2022-03-17 23:57:31 · 530 阅读 · 0 评论 -
【leetcode】86. 分隔链表
题目描述代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(nullptr) {}//这玩意算是结构体的构造函数了,这一点要注意 * }; */class Solution {public: ListNode* partition(ListNode* hea原创 2022-03-17 14:41:24 · 244 阅读 · 0 评论 -
【leetcode】30. 串联所有单词的子串 暴力法
题目描述代码class Solution {public: vector<int> findSubstring(string s, vector<string>& words) { if (s.empty() || words.empty()) return {};//s或word有一个是空的就返回空 int n = words.size();//单词的数量 int m = words[0].size();//单词的长度原创 2022-03-17 11:24:44 · 7452 阅读 · 0 评论 -
【Leetcode】49. 字母异位词分组
题目代码class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { unordered_map<string, vector<string>> mp; for (string& str: strs) { string key = str;原创 2022-03-17 00:47:28 · 942 阅读 · 0 评论 -
【leetcode】76. 最小覆盖子串(滑动窗口)
题目思路两个while循环实现滑动的感觉代码// leetcode76.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <string>#include <unordered_map>using namespace std;string minWindow(string s, string t) { unordered_map<char, int&g原创 2022-03-16 22:53:13 · 345 阅读 · 0 评论 -
【leetcode】31. 下一个排列
题目描述算法思路算法过程 标准的“下一个排列”算法可以描述为:从后向前查找第一个相邻升序的元素对 (i,j),满足 A[i] < A[j]。此时 [j,end) 必然是降序在 [j,end)从后向前查找第一个满足 A[i] < A[k] 的 k。A[i]、A[k] 分别就是所说的「小数」、「大数」将 A[i] 与 A[k]交换后可以断定这时 [j,end) 必然是降序,逆置 [j,end),使其升序如果在步骤 1 找不到符合的相邻元素对,说明当前[begin,end) 为一个原创 2022-03-11 21:12:40 · 1377 阅读 · 0 评论 -
【leetcode】19. 删除链表的倒数第 N 个结点
题目描述代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), n原创 2022-03-10 23:09:48 · 249 阅读 · 0 评论 -
【leetcode】15. 三数之和
题目描述代码class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { return threeSumTarget(nums, 0);//对题目改编,不是0,而是任意的三数之和都可以 } vector<vector<int>> threeSumTarget(vector<int>& n原创 2022-03-10 22:22:20 · 108 阅读 · 0 评论 -
【LeetCode】21. 合并两个有序链表
【LeetCode】21. 合并两个有序链表题目描述代码题目描述代码class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* dummy = new ListNode(0); ListNode* cur = dummy; while (l1 != nullptr && l2 != nullptr) {原创 2022-03-08 20:54:23 · 720 阅读 · 0 评论 -
【LeetCode】20. 有效的括号
【LeetCode】20. 有效的括号题目描述代码题目描述代码class Solution {public: bool isValid(string s) { int n = s.size(); if (n % 2 == 1) {//如果是奇数,直接pass掉 return false; } unordered_map<char, char> pairs = { {原创 2022-03-08 20:25:57 · 7395 阅读 · 0 评论 -
【LeetCode】5.最长回文子串(中心扩散法)
【LeetCode】5.最长回文子串(中心扩散法)题目描述代码题目描述代码class Solution {public: string longestPalindrome(string s) { int strlen=s.size(); int left=0; int right=0; int len=1; int maxlen=0; int maxstart=0; for(in原创 2022-03-05 15:09:33 · 307 阅读 · 0 评论 -
【华为机试】进制转换
【华为机试】进制转换题目描述代码题目描述写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。数据范围:保证结果在 :1-2的31次方减一输入描述:输入一个十六进制的数值字符串。输出描述:输出该数值的十进制字符串。不同组的测试用例用\n隔开。输入例子1:0xAA输出例子1:170代码#include<stdio.h>#include<string.h>#include<math.h>int main(){ c原创 2022-03-05 12:02:52 · 424 阅读 · 0 评论 -
【华为机试】明明的随机数
【华为机试】明明的随机数题目描述代码桶排序(其实我觉得很像计数排序)利用vector的sort,unique和erase去重,排序题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数( N≤1000 ),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。现在明明把他已经用计算机生成好的 N 个随机数按照下面的输入描述的格式交给你,请你协原创 2022-03-05 11:11:12 · 212 阅读 · 0 评论 -
【华为机试】汽水瓶
【华为机试】汽水瓶题目描述解题思路代码题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是 5 瓶,方法如下:先用 9 个空瓶子换3瓶汽水,喝掉 3 瓶满的,喝完以后 4 个空瓶子,用 3 个再换一瓶,喝掉这瓶满的,这时候剩 2 个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用 3 个空瓶子换一瓶满的还给老板。如果小张手上有 n 个空汽水瓶,最多可以换多少瓶汽水喝?数据范围:输入的正整数满足注意:本题存在多组输原创 2022-03-05 08:51:06 · 890 阅读 · 0 评论 -
【LeetCode】4. 寻找两个正序数组的中位数 (归并排序)
【LeetCode】4. 寻找两个正序数组的中位数题目描述代码题目描述代码class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int len1=nums1.size(); int len2=nums2.size(); int len =len1+len2;原创 2022-03-05 08:25:21 · 370 阅读 · 0 评论 -
【Leetcode】206.反转列表
【Leetcode】206.反转列表题目描述代码题目描述代码class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* cur = NULL, *pre = head; while (pre != NULL) { ListNode* t = pre->next;//提前要保留下pre的位置 pre->next =原创 2022-03-05 00:58:38 · 276 阅读 · 0 评论 -
【LeetCode】3. 无重复字符的最长子串(滑动窗口)
【LeetCode】3. 无重复字符的最长子串题目描述代码题目描述代码class Solution {public: int lengthOfLongestSubstring(string s) { // 哈希集合,记录每个字符是否出现过 unordered_set<char> occ; int n = s.size(); // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动原创 2022-03-04 19:11:57 · 58 阅读 · 0 评论 -
【LeetCode】2. 两数相加
【LeetCode】2. 两数相加题目描述思路代码:题目描述思路将长度较短的链表在末尾补零使得两个连表长度相等,再一个一个元素对其相加(考虑进位)获取两个链表所对应的长度在较短的链表末尾补零对齐相加考虑进位代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next原创 2022-03-04 10:51:51 · 36 阅读 · 0 评论 -
【剑指offor】面试题18:删除列表的结点
【剑指offor】面试题18:删除列表的结点题目描述题目描述原创 2022-03-04 03:07:36 · 435 阅读 · 0 评论 -
【剑指offor】面试题17:打印从1到最大的n位数
【剑指offor】面试题17:打印从1到最大的n位数题目描述代码普通解法大数解法题目描述代码普通解法class Solution {public: vector<int> printNumbers(int n) { vector<int> ans; // 最大的n位数 int t = pow(10, n) - 1; for(int i = 1; i <= t; i++){原创 2022-03-03 23:52:22 · 57 阅读 · 0 评论 -
【剑指offor】面试题16:数值的整数次方(快速幂算法)
【剑指offor】面试题16:数值的整数次方题目描述代码:题目描述代码:class Solution {public: double myPow(double x, int n) { double res=1; long b = n;//不加这个,下面b取反后就有可能会越界 if(n==0||x==1){ res=1; } else if(n>0){ res原创 2022-03-02 02:12:38 · 156 阅读 · 0 评论 -
【剑指offor】面试题13:机器人的运动范围
【剑指offor】面试题13:机器人的运动范围题目描述题目描述原创 2022-02-28 14:55:16 · 419 阅读 · 0 评论 -
【剑指offor】面试题12:矩阵中的路径
【剑指offor】面试题12:矩阵中的路径原创 2022-02-27 09:38:31 · 153 阅读 · 0 评论 -
【剑指offor】面试题11:旋转数组的最小数字
【剑指offor】面试题11:旋转数组的最小数字题目描述题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2] 输出:1 示例 2:输入:[2,2,2,0,1] 输出:0...原创 2022-02-26 10:50:18 · 61 阅读 · 0 评论 -
【剑指offor】面试题10:斐波那契数列
【剑指offor】面试题10:斐波那契数列题目描述思路代码拓展:青蛙跳台阶问题题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。原创 2022-02-25 12:01:24 · 463 阅读 · 0 评论 -
【剑指offor】面试题9:用两个栈实现队列
【剑指offor】面试题9:用两个栈实现队列题目描述思路代码题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1] 示例 2:输入:[“原创 2022-02-25 08:32:42 · 60 阅读 · 0 评论 -
【剑指offor】面试题8:二叉树的下一个节点
【剑指offor】面试题8:二叉树的下一个节点题目代码题目中序遍历下的下一个节点代码class Solution {public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { if (pNode == NULL) return NULL; TreeLinkNode* pret = pNode; if (pNode->right){//如果目标节点有右子树,那么一定在这原创 2022-02-24 18:34:51 · 217 阅读 · 0 评论 -
【剑指offor】面试题7:重建二叉树
【剑指offor】面试题7:重建二叉树题目描述题目描述原创 2022-02-24 18:30:59 · 286 阅读 · 0 评论 -
【剑指offor】面试题6:从尾到头打印列表
【剑指offor】面试题6:从尾到头打印列表题目描述思路代码题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2] 输出:[2,3,1]限制:0 <= 链表长度 <= 10000思路要实现逆序输出,要么就是栈,要么就是递归了,但列表大了以后,你递归的层级会特别深,也是不妥的。所以就破天荒的用一用stack栈这个数据额结构吧。代码class Solution {public: vector<i原创 2022-02-23 08:57:09 · 339 阅读 · 0 评论 -
【剑指offor】面试题5:替换空格
【剑指offor】面试题5:替换空格题目描述题目描述原创 2022-02-22 21:13:30 · 200 阅读 · 0 评论 -
【剑指offor】面试题4:二维数组中的查找
【剑指offor】面试题4:二维数组中的查找原创 2022-02-21 17:17:32 · 581 阅读 · 0 评论 -
【剑指offor】面试题3:数组中重复的数字
【剑指offor】面试题3:数组中重复的数字题目描述思路代码题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1数据范围:0≤n≤10000进阶:时间复杂度O(n) ,空间复杂度O(n)思路两重循环的思路,第一重循环就是一个一个扫描数组的循环,第二个循环是让下原创 2022-02-20 15:29:21 · 79 阅读 · 0 评论 -
PTA---一元多项式的乘法与加法运算
PTA---一元多项式的乘法与加法运算题目思路代码题目设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1.原创 2021-06-06 00:57:18 · 319 阅读 · 0 评论 -
PAT---两个有序序列的合并
PAT—两个有序序列的合并题目思路首先是应该注意审题,L1,L2都是带头结点的单链表,也就是说L1->Next才是这个链表的数据存储的地方,再一点就是这种链表都是要有头尾的,L一开始在头,最后返回的也就是L,r是移动加入链表的地方;L1,L2也不要去移动,让p和q去移动。L为什么要malloc,因为L的next要赋值,而且还要赋给r所以要给malloc,因为你不malloc,系统申请变量得到的空间就是指针的那个地址的空间,所以不能用Next。而p,q,r呢全都是赋值已经有的空间,所以不需ma原创 2021-05-30 15:56:37 · 200 阅读 · 0 评论 -
PTA------复杂度3 二分查找
复杂度3 二分查找题目解题思路代码题目函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};L是用户传入的一个线性表,其中Elemen.原创 2021-04-21 21:39:22 · 112 阅读 · 0 评论 -
PTA------Maximum Subsequence Sum
Maximum Subsequence Sum题目解题想法:代码题目解题想法:此题我使用的是两个for循环来解决这一问题,一开始觉得可能就是时间复杂度上过大了,解决还是能解决的,但是提交的时候状况百出,它测试的例子就很怪,全负数 和 负数与0 这两种情况,我一开始因为疏忽没有考虑到,最终也是用了很笨的办法,加了几个判断语句来解决这一问题的。代码#include <iostream>using namespace std;int main(){ int K;原创 2021-04-20 16:08:35 · 142 阅读 · 0 评论 -
PTA------最大子列和问题
题目原创 2021-04-19 14:14:32 · 392 阅读 · 0 评论 -
leetcode------13. 罗马数字转整数 (数学)c++
13. 罗马数字转整数 (数学)题目开始思考我的解题反思:网友优解题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写原创 2020-06-23 21:46:06 · 175 阅读 · 0 评论 -
leetcode------9. 回文数 (数学)
9. 回文数 (数学)题目思考解题反思官方题解复杂度分析题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?思考我第一感原创 2020-06-22 22:04:59 · 162 阅读 · 0 评论