首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

漫画:如何在数组中找到和为 “特定两个数?

我们来举个例子,给定下面这样一个整型数组(题目假定数组不存在重复元素): 我们随意选择一个特定,比如13,要求找出两数之和等于13全部组合。...由于12+1 = 13,6+7 = 13,所以最终输出结果(输出是下标)如下: 【1, 6】 【2, 7】 小灰想表达思路,是直接遍历整个数组,每遍历到一个元素,就和其他元素相加,看看和是不是等于那个特定...第1轮,用元素5和其他元素相加: 没有找到符合要求两个元素。 第2轮,用元素12和其他元素相加: 发现12和1相加结果是13,符合要求。 按照这个思路,一直遍历完整个数组。...在哈希表中查找7,查到了元素7下标是7,所以元素6(下标是2)和元素7(下标是7)是一对结果: 按照这个思路,一直遍历完整个数组即可。...= i) { resultList.add(Arrays.asList(i,map.get(other))); //为防止找到重复元素对

3K64

漫画:如何在数组中找到和为 “特定三个数?

这一次,我们把问题做一下扩展,尝试在数组中找到和为“特定三个数。 题目的具体要求是什么呢?给定下面这样一个整型数组: ? 我们随意选择一个特定,比如13,要求找出三数之和等于13全部组合。...我们以上面这个数组为例,选择特定13,演示一下小灰具体思路: 第1轮,访问数组第1个元素5,把问题转化成从后面元素中找出和为8(13-5)两个数: ? 如何找出和为8两个数呢?...至于空间复杂度,同一个哈希表被反复构建,哈希表中最多有n-1个键值对,所以该解法空间复杂度是O(n)。 ? ? ? ? 我们仍然以之前数组为例,对数组进行升序排列: ? ? ?...此时双指针重合在了一起,如果再继续移动,就有可能和之前找到组合重复,因此我们直接结束本轮循环。 第2轮,访问数组第2个元素2,把问题转化成从后面元素中找出和为11(13-2)两个数。...                }             }         }         return resultList;     } 上面这段代码表面上有三层循环,但每一轮指针j和k移动次数加起来最多

2.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

Excel公式练习56: 获取重复次数最多

学习Excel技术,关注微信公众号: excelperfect 本次练习是:给定一个单元格区域,要求使用公式得到该区域中重复次数最多。...如下图1所示,在单元格区域A1:F1中,重复次数最多数据是“完美Excel”。 ? 图1 先不看答案,自已动手试一试。...公式解析 在《Excel公式练习55:获取重复数据出现最大次数》中,我们已经知道,公式中COUNTIF函数可生成数组: {2,3,3,2,1,3} 这样,公式中: MATCH(MAX(COUNTIF...2,3,3,2,1,3}),{2,3,3,2,1,3},0) 转换为: MATCH(3,{2,3,3,2,1,3},0) 得到: 2 代入主公式中,得到: =INDEX(A1:F1, 2) 结果为单元格B1中...: =INDEX(A1:F1,1,MATCH(MAX(COUNTIF(A1:F1,A1:F1)),COUNTIF(A1:F1,A1:F1),0)) 扩展 将本文示例与《Excel公式练习55:获取重复数据出现最大次数

2.7K11

如何从有序数组中找到和为指定两个元素下标

如何从有序数组中找到和为指定两个元素下标?...例如:{2, 7, 17, 26, 27, 31, 41, 42, 55, 80} target=72.求得为17和55,对应下标为:2,8 思考下,只要将元素自己与后面的所有元素相加计算一下,就能找到对应两个...换个思路,在这个有序数组中,可以使用2个指针分别代表数组两侧两个目标元素.从目标数组两侧,向中间移动;当两个指针指向元素计算,比预定target小了,那左侧指针右移下,重新计算;当计算大于target...时,右侧指针左移下,直到两个元素和与target相等.这种方法叫做搜索空间缩减,这也是这道题关注点.这种方法时间复杂度只有O(2*n)(非严谨说法),是非常高效一种方法了....一起看下指针如何移动, 1. 2+80>72,j左移; 2. 2+55<72,i右移 3. 7+55<72,i右移 4. 17+55=72,计算结束 可见,两个指针只移动了3次,就计算出结果

2.3K20

何在无序数组中查找第K小

如题:给定一个无序数组,如何查找第K小。...:O(NK) (3)使用大顶堆,初始化为k个,然后后面从k+1开始,依次读取每个,判断当前是否比堆顶小,如果小就移除堆顶,新增这个小,依次处理完整个数组,取堆顶就得到第k小。...,就是我们要找,利用这个思想我们就可以使用快排思想,来快速找基准index(数组下标从0开始),如果恰好碰到了基准下标index+1=k,那就说明基准index所在下标的,就是我们要找结果...注意,如果思路理解了,那么该题目的变形也比较容易处理,比如 (1)给定一个无序数组,查找最小/大k个数,或者叫前k小/大所有数。...剖析:有一个数字数量超过了一半,隐含条件是在数组排过序后,中位数字就是n/2下标,这个index必定是该数,所以就变成了查找数组第n/2index,就可以利用快排分区找基准思想,来快速求出

5.7K40

Mongoose 实现关联查询和踩坑记录

文档内嵌与引用模式 MongoDB 是一种文档对象模型,使用起来很灵活,它文档结构分为 内嵌和引用 两种类型。...内嵌是把相关联数据保存在同一个文档内,我们可以用对象或数组形式来存储,这样好处是我们可以在一个单一操作内完成,可以发送较少请求到数据库服务端,但是这种内嵌类型也是一种冗余数据模型,会造成数据重复...图片来源:mongoing[1] 引用模型示例 JSON 模型 我们通过作者和书籍关系,一个作者对应多个书籍这样一个简单示例来学习如何在 MongoDB 中实现关联非 _id 查询。...,经过 lookup 阶段处理,输出文档中会包含一个新生成数组列。..._id 字段,并且在 populate 方法里无法更改,但是在 Mongoose 4.5.0 之后增加了虚拟填充[3],以便实现文档中更复杂一些关系。

26.4K20

你真的了解mongoose吗?

引言 继上篇文章「Koa2+MongoDB+JWT实战--Restful API最佳实践」后,收到许多小伙伴反馈,表示自己对于mongoose不怎么了解,上手感觉有些难度,看官方文档又基本都是英文(宝宝心里苦...每个 schema 映射到 MongoDB 集合(collection)和定义该集合(collection)中文档形式。...该 versionKey 是每个文档首次创建时,由 mongoose 创建一个属性。包含了文档内部修订版。此文档属性是可配置。默认为__v。...,创建一个验证器,验证是否匹配给定正则表达式 enum: 数组,创建一个验证器,验证是否是给定数组元素 数字 min: 数字,创建一个验证器,验证是否大于等于给定最小 max: 数字,创建一个验证器...mongoose.connect('mongodb://localhost:27017/myapp'); 这是连接运行在本地myapp数据库最小(27017)。

41.4K30

大数据技术之_22_MongoDB学习_MongoDB 简介、下载、安装、启动、配置和关闭 + MongoDB 基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查

集合(collection):集合类似于数组,在集合中可以存放文档文档(document):文档是数据库中最小单位,我们存储和操作内容都是文档。...可以将对象或数组对象添加进集合中,添加时如果集合或数据库不存在,会自动创建。   插入文档对象会默认添加_id 属性,这个属性对应一个唯一id,是该文档唯一标识。...查询一个符合条件文档对象属性(该方法常用) db.users.findOne({age:25}).length();  // 查询一个符合条件文档对象属性(该方法不常用) 删除文档   db.collection.remove...", "shenzhen"], movies: ["sanguo", "hero"]} // MongoDB 文档属性也可以是一个文档,当一个文档属性是一个文档时,我们称这个文档叫做内嵌文档。...// $push 用于向数组中添加一个新元素(即可以重复添加) // $addToSet 向数组中添加一个新元素,如果数组中已经存在了该元素,则不会添加(即不可以重复添加) db.users.update

17.7K30

Nodejs和Mongodb连接器Mongoose

同时它也是一个对象数据库,没有表、行等概念,也没有固定模式和结构,所有的数据以文档形式存储(文档,就是一个关联数组对象,它内部由属性组成,一个属性对应可能是一个数、字符串、日期、数组,甚至是一个嵌套文档...同时它也是针对MongoDB操作一个对象模型库,封装了MongoDB文档一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。 2. Mongoose能做什么?...Mongoose,因为封装了对MongoDB文档操作常用处理方法,让NodeJS操作Mongodb数据库变得easy、easy、So easy!...MongoDB —— 是一个对象数据库,没有表、行等概念,也没有固定模式和结构,所有的数据以Document(以下简称文档)形式存储(Document,就是一个关联数组对象,它内部由属性组成,...一个属性对应可能是一个数、字符串、日期、数组,甚至是一个嵌套文档。)

5.8K41

Mongoose 插件记录Node.js API日志

Mongoose 还提供全局插件,你可以将其用于所有模式。例如我们将会编写一个插件,它将创建两个 jsonsdiff 并写入 mongodb。...isEqual:此方法支持比较数组数组缓冲区、布尔、日期对象、错误对象、映射、数字、对象、正则表达式、集合、字符串、符号和类型化数组。...如果当前对象 value 不等于前一个对象中相同属性:base[key] 如果该是对象本身,我们递归调用函数changes 直到它得到一个,它最终将作为 result[key]=value 存储在...步骤3:创建一个插件用来 diff 并将其保存到数据库 现在我们需要跟踪数据库中前一个 document 并在保存到 mongodb 之前创建一个 diff。...现在我们需要使用架构上可用 init 和 save 方法。 this.isNew():如果你正在创建新文档,那么只需返回 next()中间件。

2.7K40

Node.js中MongoDB

集合(collection):集合类似于数组,在集合中可以存放文档文档(document):文档数据库中最小单位,我们存储和操作内容都是文档。...为Html5文档中,添加一个classes:{base:["h6+c3","js","jQuery", "abc"] , core:["三大框架","node.js"]} //MongoDB文档属性也可以是一个文档...,当一个文档属性是一个文档时,我们称这个文档叫做 内嵌文档 db.colleges.update({name:"html5"},{$set:{classes:{base:["h6+c3","js",.../12.向name为Html5文档中,添加一个新核心课程 "微信小程序" //$push 用于向数组中添加一个新元素 //$addToSet 向数组中添加一个新元素 , 如果数组中已经存在了该元素...,相当于MongoDB数据库中集合collection + Document: Document表示集合中具体文档 mongoose使用步骤 1.下载安装Mongoose: npm i mongoose

5.2K40

Nodejs学习笔记(十四)— Mongoose介绍和入门

简介   Mongoose是在node.js异步环境下对mongodb进行便捷操作对象模型工具   那么要使用它,首先你得装上node.js和mongodb,关于mongodb安装和操作介绍可以参考...、集群方式连式等等,这里解释了,用着了时候自行查询API文档 http://mongoosejs.com/docs/api.html#index-js Schema   schema是mongoose...里会用到一种数据模式,可以理解为表结构定义;每个schema会映射到mongodb一个collection,它不具备操作数据库能力   我们先改造一下db.js,导出mongoose对象  ...  $nin           不在多个范围内   $all            匹配数组中多个   $regex  正则,用于模糊查询   $size   匹配数组大小   $maxDistance...其它操作   其它还有比较多常用 索引和默认   再看看我对user.js这个schema修改 /** * 用户信息 */ var mongoose = require('.

2.6K60
领券