摘要:
1.两数之和 原题链接 题解 在数组中找到一组数组使得他们的和为目标值,最容易想到的方式是暴力的做法,直接利用两个循环 代码如下: class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int n=n 阅读全文
摘要:
原题链接 题解 因为每一条边的权重都是1,所以可以使用bfs查找最短路径,题目中要求的要记录最短路径并打印出来,利用一个二维数组记录该点是由哪一个点拓展而来(bfs找到的时候就是最短路径) 代码如下 #include <iostream> #include <algorithm> #include 阅读全文
摘要:
AcWing 143.最大异或对 题目描述 在给定的N个整数A1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N。 第二行输入N个整数A1~AN。 输出格式 输出一个整数表示答案。 数据范围 1≤N≤105, 0≤Ai<231 输入样例: 3 1 阅读全文
摘要:
题目链接 题意 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1) 分析 如果是数值中只有一个这样的数字,我们应该怎么做? 根据位运算我们可以知道,a ^ a = 0, 0 ^ a = a, a ^ b 阅读全文
摘要:
数组中超过一半的元素 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 解法一: 利用排序算法,因为这个数字的出现次数超过数组长度的一半,所以排序之后,中间的数必定为答案 int majorityElement(vec 阅读全文
摘要:
求数组的最大子序列和 方法一 给定了一个数组让我们求他的最大子序列和,我们最容易想到的方法就是暴力枚举的方式 class Solution { public: int maxSubArray(vector<int>& nums) { int thisMax = 0, sumMax = nums[0] 阅读全文
摘要:
AcWing 831.KMP字符串 题目描述 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串P在模式串S中多次作为子串出现。 求出模板串P在模式串S中所有出现的位置的起始下标。 输入格式 第一行输入整数N,表示字符串P的长度。 第二行输入字符串P。 第三 阅读全文
摘要:
AcWing 895.最长上升序列 题目描述 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数N。 第二行包含N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤1000, −109≤数列中的数≤109 输入样例: 7 3 阅读全文
摘要:
AcWing 803.区间合并 题目描述 给定 n 个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3]和[2,6]可以合并为一个区间[1,6]。 输入格式 第一行包含整数n。 接下来n行,每行包含两个整数 l 和 r。 阅读全文