算法刷题之数组
杰明学编程
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 59 - I. 滑动窗口的最大值
题目:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。方法一:暴力法+遍历函数完整版代码:#include <iostream>using namespace std;int main(){ int nums[8]={1,3,-1,-3,5,3,6,7}; int ans[6]={0}; int k=0; int res=0; for(int i=0;i<8;i++) { res=0; for(int j=i;j<i+原创 2020-10-08 22:27:04 · 86 阅读 · 0 评论 -
科大讯飞笔试
1.分解质因数题目描述:编写一个函数用递归实现将一个正整数分解质因数,如50=255,则程序打印"255",每个素因子之间用*号隔开。如果这个数本身是素数,则直接输出素数。输入描述:50*输出描述:2*5 5函数代码:#include <iostream>using namespace std;int main(){ int n; cin>>n; int k=0; int res[100]; for(int i=2;i<=n;i++) {原创 2020-09-30 11:00:50 · 386 阅读 · 0 评论 -
万兴科技笔试第二次
1.因式分解题目描述:给定一个非素数,对对其进行因式分解,得到所有的因子。输入:18输出:[2,3,3]函数核心代码:vector<int>getfact(int num){ vector<int>res; for(int i=2;i<=num;i++)\ { while(num%i==0) { res.push_back(i); num=num/i; } } return res;}...原创 2020-09-30 10:52:13 · 773 阅读 · 0 评论 -
多益面试手撕代码-合并两个有序数组
题目描述:给定两个数组arrayA[]={1,3,4,12,55,56,71,81}和arrayB[]={2,12,13,19,32,55,57,100};把这两个有序数组合并城一个新的有序数组,并返回该数数组。函数代码:#include <iostream>using namespace std;int main(){ int arrayA[]={1,3,4,12,55,56,71,81}; int arrayB[]={2,12,13,19,32,55,57,100}; in原创 2020-09-29 21:06:39 · 319 阅读 · 0 评论 -
8.7跟谁学提前批笔试
题目描述:给定一个数组,连续有大于或者5个1就输出正确(甲方获胜),否则乙方获胜函数代码#include <iostream>using namespace std;bool fun(int a[],int n){ int cnt=0; for(int i=0;i<n;i++) { cnt=0; for(int j=i+1;j<n;j++) { if(cnt>=5) { return true; } if(a[j]=原创 2020-09-29 20:49:54 · 97 阅读 · 0 评论 -
9.28巨人网络笔试
题目描述:1.输入一个数组nums,对于其中每个元素nums[i],请统计数组中比它小的所有数字的数目。并且以数组的形式返回。输入:[6,5,4,8,6]输出:[2,1,0,4,2]说明:nums[0]=6 数组中小于6的数字数目为2nums[1]=5 数组中小于6的数字数目为1nums[2]=4 数组中小于6的数字数目为0nums[3]=8 数组中小于6的数字数目为4nums[4]=6 数组中小于6的数字数目为2函数代码:#include <iostream>原创 2020-09-29 15:55:27 · 917 阅读 · 0 评论 -
9.19 万兴科技笔试
第三题:从1到N的自然数组,把这个自然数组排序输入:{1,3,5,2,4,6};输出:{1,2,3,4,5,6};函数代码:#include <iostream>using namespace std;int main() { int a[]={1,3,5,2,4,6}; int n=6; for(int k=0;k<n;k++) { cout<<a[k]<<" "; }原创 2020-09-19 17:23:56 · 1535 阅读 · 0 评论 -
377. 组合总和 Ⅳ
题目:给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。题解思路:方法一:一维动态规划函数代码:class Solution {public: int combinationSum4(vector<int>& nums, int target) { int n=nums.size(); vector<unsigned long long> dp(target+1,0); dp原创 2020-09-08 11:08:20 · 90 阅读 · 0 评论 -
264. 丑数 II
题目:编写一个程序,找出第 n 个丑数。丑数就是质因数只包含 2, 3, 5 的正整数。题解思路:方法一:动态规划函数代码:class Solution {public: int nthUglyNumber(int n) { vector<int>dp(n,0); dp[0]=1; int a=0,b=0,c=0; for(int i=1;i<n;i++) { dp[i]=m原创 2020-09-08 01:40:12 · 87 阅读 · 0 评论 -
剑指 Offer 14- II. 剪绳子 II
题目:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。方法一:迭代数学计算函数代码:class Solution {p原创 2020-09-08 01:40:35 · 80 阅读 · 0 评论 -
剑指 Offer 43. 1~n整数中1出现的次数
题目:力扣233. 数字 1 的个数输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。方法一:暴力法+循环迭代函数代码:class Solution {public: int countDigitOne(int n) { int cnt=0; for(int i=0;i<=n;i++) { int t=i原创 2020-09-08 01:40:03 · 92 阅读 · 0 评论 -
300. 最长上升子序列
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。题解思路:方法一:动态规划函数代码:class Solution {public: int lengthOfLIS(vector<int>& nums) { int n=nums.size(); vector<int>dp(n+1,1); int res=0; for(int i=0;i<n;i++) {原创 2020-09-07 04:34:57 · 69 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
题目: 同力扣53 最大子序和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。题解思路:方法一:动态规划注意res=dp[0]=nums[0];函数代码:class Solution {public: int maxSubArray(vector<int>& nums) { int n=nums.size(); vector<int> dp(n,0);原创 2020-09-07 04:06:31 · 88 阅读 · 0 评论 -
1.两数之和
方法一:两遍哈希表函数代码一:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> m; for(int i=0;i<nums.size();i++) { m[nums[i]]=i; } for(in原创 2020-09-03 00:52:42 · 88 阅读 · 0 评论 -
349. 两个数组的交集
题目:给定两个数组,编写一个函数来计算它们的交集。题解思路:方法:STL中的set函数代码一:class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { set<int>record; for(int i=0;i<nums1.size();i++)原创 2020-09-03 00:50:01 · 74 阅读 · 0 评论 -
350. 两个数组的交集 II
题目:给定两个数组,编写一个函数来计算它们的交集。题解思路:方法:map或unorder_map或哈希表函数代码:class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { map<int,int>record; for(int i=0;i<nums1.size();i+原创 2020-09-03 00:46:04 · 82 阅读 · 0 评论