摘要: 1.两数之和 原题链接 题解 在数组中找到一组数组使得他们的和为目标值,最容易想到的方式是暴力的做法,直接利用两个循环 代码如下: class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int n=n 阅读全文
posted @ 2020-06-28 13:52 Lngstart 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题解 因为每一条边的权重都是1,所以可以使用bfs查找最短路径,题目中要求的要记录最短路径并打印出来,利用一个二维数组记录该点是由哪一个点拓展而来(bfs找到的时候就是最短路径) 代码如下 #include <iostream> #include <algorithm> #include 阅读全文
posted @ 2020-06-21 13:02 Lngstart 阅读(151) 评论(0) 推荐(0) 编辑
摘要: AcWing 143.最大异或对 题目描述 在给定的N个整数A1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N。 第二行输入N个整数A1~AN。 输出格式 输出一个整数表示答案。 数据范围 1≤N≤105, 0≤Ai<231 输入样例: 3 1 阅读全文
posted @ 2020-05-31 11:37 Lngstart 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题意 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1) 分析 如果是数值中只有一个这样的数字,我们应该怎么做? 根据位运算我们可以知道,a ^ a = 0, 0 ^ a = a, a ^ b 阅读全文
posted @ 2020-04-29 23:20 Lngstart 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 数组中超过一半的元素 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 解法一: 利用排序算法,因为这个数字的出现次数超过数组长度的一半,所以排序之后,中间的数必定为答案 int majorityElement(vec 阅读全文
posted @ 2020-03-16 18:58 Lngstart 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 求数组的最大子序列和 方法一 给定了一个数组让我们求他的最大子序列和,我们最容易想到的方法就是暴力枚举的方式 class Solution { public: int maxSubArray(vector<int>& nums) { int thisMax = 0, sumMax = nums[0] 阅读全文
posted @ 2020-02-28 14:05 Lngstart 阅读(167) 评论(0) 推荐(0) 编辑
摘要: AcWing 831.KMP字符串 题目描述 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串P在模式串S中多次作为子串出现。 求出模板串P在模式串S中所有出现的位置的起始下标。 输入格式 第一行输入整数N,表示字符串P的长度。 第二行输入字符串P。 第三 阅读全文
posted @ 2020-02-09 20:35 Lngstart 阅读(275) 评论(0) 推荐(0) 编辑
摘要: AcWing 895.最长上升序列 题目描述 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数N。 第二行包含N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤1000, −109≤数列中的数≤109 输入样例: 7 3 阅读全文
posted @ 2020-02-08 19:30 Lngstart 阅读(161) 评论(0) 推荐(0) 编辑
摘要: AcWing 803.区间合并 题目描述 给定 n 个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3]和[2,6]可以合并为一个区间[1,6]。 输入格式 第一行包含整数n。 接下来n行,每行包含两个整数 l 和 r。 阅读全文
posted @ 2020-02-07 19:02 Lngstart 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 主要的好处是静态的,因此不需要每一次都动态的new,所以在做算法题的时候能够节省时间! 数组模拟单链表 利用两个数组模拟,一个数组存储val值,另一个数组存储其下一个节点的index,存val数组的index值对应在next数组中 代码如下 int e[N], ne[N]; int head, id 阅读全文
posted @ 2020-02-06 21:47 Lngstart 阅读(265) 评论(0) 推荐(0) 编辑