【算法题:整形数组找a和b使得a+b=n】教程文章相关的互联网学习教程文章

算法练习 -- DP 查找和为指定数字的数组

问题:从2,4,3,5,7,1,9,10中找出多个数,和为11这个题目是0 1背包的一个变体,因此可用DP来解。DP解法的关键在于得到递推公式,对于这个问题来说,DP公式为:j ∈[1,11]i ∈[0,7]dp[i][j] = 从(arr[i], dpArr[i-1][j], arr[i] + dpArr[i-1][j], arr[i]+ dpArr[i-1][j-arr[i]]) 中选出小于j的最大值具体代码如下:void Main() {DpFind();Console.WriteLine(dpArr); }static int n = 11; static int[] arr = new int[]{2,4,3,5,7,9,1...

经典算法——连续子数组最大和问题

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [?2,1,?3,4,?1,2,1,?5,4], the contiguous subarray [4,?1,2,1] has the largest sum = 6.一、问题描述:输入一个整数数组,求数组中连续的子数组使其和最大。二、解题方法://从左至右扫描数组,如果前面一段连续子数组的和小于0,则置为0,重新从下个元素开始累加 int maxSubArray(vect...

【算法练习题】力扣练习题——数组(3):最接近的三数之和【代码】

原题说明:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).原题链接:https://leetcode-cn.com/problems/3sum-closest 题目分析:一开始我顺着数组(2)的思路,很容易认为是不断地找加和结果和目标值相...

算法-利用object的key唯一性删除数组重复项【代码】

# 利用object的key唯一性删除数组重复项 # uniq.html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> var arr=[12,34,22,34,55,90,66,12,90,9,12,33,22] //将数组转换为object,数组的元素转换为Object的key function toObject(arr){ var obj={} for (var i = arr.length - 1; i >= 0; i--) { obj[arr[i]]=true } ...

《数据结构、算法与应用》第一章习题1.7(动态调整数组大小)【图】

最近在读《数据结构、算法与应用》这本书,把书上的习题总结一下,用自己的方法来实现了这些题,可能在效率,编码等方面存在着很多的问题,也可能是错误的实现,如果大家在看这本书的时候有更优更好的方法来实现,还请大家多多留言交流多多指正,谢谢7. 假定用一维数组a[0 : size-1]来存储一组元素。如果有n个元素,可以把它们存储在a[0],..., a[n-1]中。当n超过si ze时, 数组将不足以存储所有元素 , 必须分配一个更大的数组。类似地...

笔试算法题(28):删除乱序链表中的重复项 & 找出已经排好序的两个数组中的相同项【代码】【图】

出题:给定一个乱序链表,节点值为ASCII字符,但是其中有重复项,要求去除重复项并保证不改变剩余项的原有顺序;分析:创建一个256(2^8)大小的bool数组,初始化为false,顺序读取链表,将字母对应位置为false的重新标记为true并保留节点,将字母对 应位置为true的保持并删除节点;时间复杂度为O(N),空间复杂度为常量。注意删除节点和不删除节点的情况下,pre和cur的移动操作不相同;解题: 1struct Node {2char value;3 ...

算法-数组元素相乘【代码】【图】

题目:给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法:要求O(1)空间复杂度和O(n)的时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等);实现程序(主流编程语言任选)实现并简单描述。(注意黑体)中间变量解法: NSArray *firstArr=[[NSArray alloc]initWithObjects:@"3",@"5",@"8",@"10", nil];NSMutableArray...

C算法--数组中消失的数字和单身狗问题-异或【代码】【图】

第一:消失的数字对于一个int数组其特点为: 1. 其元素个数为n 2. 每个元素的值为[0,n]之间(前闭后闭区间) 3. 元素的值没有重复,即0-n,这n+1个数字中的n个数字组成的数组1.1 问题在时间复杂度为O(n)和空间复杂度为O(1)的条件下,找到缺失的数字1.2 解法利用异或的特点:1. 0 ^ A = A2. 0 ^ A ^ A = 0 将0 与数组中每个元素以及0-n分别进行异或计算 ; 由于性质2,可得结果 = 0 ^ 缺失数字 = 缺失数字(性质1)1.3 代码实现#def...

【算法】获取两个数组所有结合的结果。【代码】【图】

/// <summary>/// 获取两个数组的所有结合的结果值/// </summary>/// <param name="args"></param>static void Main(string[] args){var strs1 = new string[] { "w", "q", "b", "s", "g" };var strs2 = new string[] { "1", "2", "3" };Console.WriteLine(NewString(strs1, strs2)); }public static string NewString(string[] strs1, string[] strs2){Stopwatch sw = new Stopwatch();sw.Start();var len1 = strs1.Length;var ru...

数据结构和算法-001 数组【代码】

数组,都懂的,直接看代码吧,实现以下功能:创建数组查找在索引上的值查找数组中是否含有值删除在索引上的值添加一个值查找一个值在数组的位置public class ArrayStructures {private int[] theArray = new int[50];private int arraySize = 10;public void generateRandomArray(){for (int i =0; i< arraySize;i++){theArray[i] = (int)(Math.random()*10 + 10);}}public void printArray(){StringBuffer sb = new StringBuffer(...

[数据结构与算法] : 栈的数组实现【代码】

头文件 1 typedef int ElementType;2 3#ifndef _STACK_AR_4#define _STACK_AR_5 6struct StackRecord;7 typedef struct StackRecord *Stack;8 9int IsEmpty(Stack S); 10int IsFull(Stack S); 11 Stack CreateStack(int MaxElements); 12void DisposeStack(Stack S); 13void MakeEmpty(Stack S); 14void Push(ElementType X, Stack S); 15ElementType Top(Stack S); 16void Pop(Stack S); 17ElementType TopAndPop(Stack S); 1819#...

【算法练习题】力扣练习题——数组(2):三数之和【代码】【图】

原题说明:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]原题链接:https://leetcode-cn.com/problems/3sum 解法一:基于HashMap的暴力求解参考力扣题:https://leetcode-cn.com/problems/two-sum/可以...

[算法]最长子数组问题【代码】

一、未排序正数数组中累加和为给定值的最长子数组长度题目:给定一个数组arr,该数组无序,但每个数都是正数,再给定一个正数K。求arr的所有子数组中所有元素相加和为K的最长子数组长度。例如:arr=[1,2,1,1,1],K=3,累加和为3的最长子数组为[1,1,1],return 3。程序:publicstaticint getMaxLength(int[] arr, int k) { if (arr == null || arr.length == 0 || k <= 0) { return 0;} int left = 0; int right = 0; int sum = arr...

算法题:找出整数数组中两个只出现一次的数字【代码】

问题:一个整数数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。分析:这是一个很新颖的关于位运算的题目。首先考虑这个问题的一个简单版本:一个整数数组里除了一个数字之外,其他的数字都出现两次,请写程序找出这个只出现一次的数字。这个问题的突破口在哪?题目中数组的性质是只有一个整数出现一次,其他的都出现两次。这样的话就使我们想到了...

算法题_leetcode189_旋转数组【代码】

题解位置 class Solution {public void rotate(int[] nums, int k) {int len = nums.length; // 数组长度k = k % len; // 简化一下k// 外循环int count = 0; // 计数器for (int start = 0; count < len; start ++) {int cur= start; // 当前位置 int curVal = nums[pre]; // 当前位置元素do {int next = (cur+ k) % len; // 要移动到的位置nextint tmp = nums[next]; // 记录next位置本来存...