遍历

数据结构和算法----两数之和

牧云@^-^@ 提交于 2019-12-28 04:50:22
问题: 给定一个整数数组 nums 和一个目标值 target, 请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。 但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解法一:多层循环暴力解法 public static int [ ] getIndex1 ( int [ ] arrs , int target ) { int [ ] indexArr = new int [ 2 ] ; for ( int i = 0 ; i < arrs . length ; i ++ ) { for ( int j = i + 1 ; j < arrs . length ; j ++ ) { if ( arrs [ i ] + arrs [ j ] == target ) { indexArr = new int [ ] { i , j } ; } } } return indexArr ; } 解法分析: 暴力循环就是把数组中的元素进行两次遍历,每次和后面的元素进行相加, 再和目标值进行比较,如果能找到两数之和为目标值的元素,就返回这两个元素的下标。 时间复杂度: O(n

设计模式之迭代器模式

不羁的心 提交于 2019-12-28 03:24:07
迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 Java 开发过程中遍历是常用的。如下边程序 for ( int i = 0 ; i < arr . length ; i ++ ) { System . out . println ( arr [ i ] ) ; } for语句中i++每次循环自增1,迭代到下一元素。将循环变量的作用抽象化,通用化后形成的模式,在设计模式中成为Iterator模式。 实现场景 将书(Book)放到书架(BookShelf)中,并将书名按顺序显示 UMl 名字 说明 Aggregate 标识集合的接口 Iterator 遍历集合的接口 Book 表示书的类 BookShelf 表示书架的类 BookShelfIterator 遍历书架的类 Main 测试类 程序示例 Aggregate 接口 所要便利的集合的接口。实现了该接口的类将成为一个可以保存多个元素的集合,类似数组。 public interface Aggregate { public abstract Iterator iterator ( ) ; } Aggregate接口中声明的方法为iterator,作用为生成一个用于遍历的迭代器。 Iterator 接口 作用为遍历集合中元素,相当于循环语句中的循环变量

最近学到的一些前端知识

家住魔仙堡 提交于 2019-12-27 20:23:00
在Vue中使用v-for不仅可以遍历数组,还可以遍历对象,当然也可以遍历字符串。 还有在Vue中,不可以深度监听数组的变化,比如将数组arr某一项的值改变,在视图上不会发生变化,在网上找了很多方法,包括Vue.$set(原对象,位置,值),以及vue中的变异方法,像push,pop,shift,unshift,这些,最后发现都不生效,最后找到原因是我push的值不对,在数组中不能直接push数组,要进行扁平化处理,让其变成元素而不是一个数组,才行。 之后就是在页面中有一个数组,最后向后台传数据时需要传这个数组,这时候怎么办呢, 首先新建一个对象,对你要传的数组进行forEach遍历,然后将对象中的[key]设置为value,我的代码是这样的 let form_data = {}; list.forEach((obj)=>{ form_data[obj.key] = obj.val; }) 如果对象中有值要新增的值 也可以对form_data.对象名 = 对象值进行设置 还有在swiper中对其分页器进行设置时,建议使用自定义样式,这样自定义性更强适应性更强。 最后在布局时,要考虑多方面因素,这里的数据是死的还是活的,如果数据多了怎么办。还有就是在做响应式开发时,进行列表布局时,如果是偶数个宽可以定为数值,如果是奇数个最好还是使用百分比进行布局。 暂时想到这么多,以后有新的收获再补充

遍历Map集合

倾然丶 夕夏残阳落幕 提交于 2019-12-27 08:41:38
package cn.cqvie.test; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Map<String, String> map = new HashMap<String, String>(); map.put("001", "中盎司"); map.put("002", "中盎司1"); map.put("003", "中盎司2"); /** * 1.用Set遍历Map集合 */ Set<String> set = map.keySet(); for(String k:set){ System.out.println(k+","+map.get(k)); } /** * 2.用Set<Map.Entry<String, String>>遍历Map集合 */ Set<Map.Entry<String, String>> kset = map.entrySet(); for(Map.Entry<String, String> entry:kset){ System.out.println

23种设计模式 VOL.16: 迭代器模式

不打扰是莪最后的温柔 提交于 2019-12-27 07:21:33
思想: 为多种容器提供统一的迭代接口(迭代方式不同), 客户端不需要关心怎么遍历; 使用场景: 当遍历不同的容器则需要多种遍历方式, 会暴露元素的内部结构, 这种情况就用迭代器模式将具体容器指定对应迭代方式, 客户端只要操作迭代接口(Iterator), 无需关心内部是怎么迭代的; 遍历学校下的学院和院系 代码实现 迭代器 容器与迭代器关联 Java中用到的地方 ArrayList类中有个Ite内部类能返回可以遍历集合的迭代器 来源: CSDN 作者: HackDream2020 链接: https://blog.csdn.net/aa503709643/article/details/103627495

05 深入模板

拜拜、爱过 提交于 2019-12-27 05:03:48
Django模板语言是Django内置的模板语言,Jinjia2是当前Python最流行的模板语言。 5-1 变量与标签 # 变量以{{ variable }}表示,variable是变量名,变量的类型可以是Python支持的数据类型,使用方法如下: # 从下面的例子可以看出,模板的变量需要和标签相互结合使用 # 模板的标签就如Python里面的函数和方法 <ul id="cate_box" class="lf"> {% for type in type_list %} #是for遍历标签,将变量进行遍历输出 <li> <h3><a href="#">{{ type.type }}</a></h3> #代表变量type_list的某个属性 <p> {% for name in name_list %} {% if name.type == type.type %} #是if判断标签,主要对变量进行判断处理 <span>{{ name.name }}</span> {% endif %} {% endfor %} </p> </li> {% endfor %} </ul> # Django常用内置标签 # {% for %} 遍历输出变量的内容,变量类型应为列表或数据对象 {% for item in myList %} {{ item }} {% endfor %} # {% if

Python真牛逼,获取压缩文件密码,我只要一分钟!

时光毁灭记忆、已成空白 提交于 2019-12-27 04:24:45
事情的经过是这样的: 又是奶茶,行吧行吧。 快点开工,争取他回来之前搞定。 他说是6位数字密码 那么我们可以利用python生成全部的六位数字密码 这样,我们就生成了一个从000000到99999的密码表。 并把它们存入到 passdict.txt 的文件中。 6位的密码表就这么大!!! 下一步做什么? 自然是将生成的密码表中的密码遍历 暴力破解啦! 科普时间: zipFile模块式Python自带的模块,提供了对zip 文件的创建,读,写,追加,解压以及列出文件列表的操作 解压使用extractll方法extractall(path=None, members=None, pwd=None) 1. path:指定解压后文件的位置 2. members:(可选)指定要Zip文件中要解压的文件,这个文件名称必须是通过namelist()方法返回列表的子集 3. pwd:指定Zip文件的解压密码 那么我们可以利用 zipFile 模块来遍历密码表, 挨个挨个密码尝试,看能不能打开压缩包。 直到成功导入zipFile 花了不到一分钟 成功解出密码是: 收工√ 李大伟设置的只是6位数字的密码,所以本次只要单线程暴力遍历就ok了。 那如果更多位数,字母数字特殊字符混合的复杂密码呢? 我们可以应用多线程进程解压,加快速度 网络上还有一些暴力破解字典,可以下载用来遍历 感兴趣的朋友们不妨试试。

Java集合遍历性能

随声附和 提交于 2019-12-27 02:16:17
数据在内存中主要有两种存储方式:   1.顺序存储,Random Access(Direct Access)     这种方式,相邻的数据元素存放于相邻的内存地址中,整块内存地址是连续的,可以根据元素的位置直接计算出内存地址,直接进行读取。读取一个特定位置元素的平均时间复杂度为O(1)。正常来说,只有基于数组实现的集合,才有这种特性。Java中以ArrayList为代表。   2.链式存储,Sequential Access:     这种方式,每一个数据元素,在内存中都不要求处于相邻的位置,每个数据元素包含他的下一个元素的内存地址,不可以根据元素的位置直接计算出内存地址,只能按照顺序读取元素。读取一个特定位置元素的平均时间复杂度为O(n)。主要是以链表为代表。Java中以LinkedList为代表。 遍历方式主要有   1.传统的for循环遍历,基于计数器的:     遍历者自己在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到一最后一个元素后,停止。主要是需要按元素的位置来读取。这也是最原始的集合遍历方法。 for (int i = 0; i < list.size(); i++) { list.get(i); }   2.迭代器遍历,Iterator:     Iterator本来是OO的一个设计模式,主要目的是屏蔽不同数据集合的特点,统一遍历集合的接口

iOS开发中数组常用的五种遍历方式

耗尽温柔 提交于 2019-12-27 02:12:49
随着iOS的不断发展,apple也不断推出性能更高的数组遍历方式,下面将对熟悉的五种遍历方式进行列举。 首先定义一个数组,并获取数组长度 NSArray *array=@[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",]; NSInteger count =array.count; 一、for循环 for (NSInteger i=0; i<count; i++) { NSLog(@"%@----%@",array[i],[NSThread currentThread]); } 打印结果如下: 2017-01-03 11:02:01.537 MyTestWorkProduct[2013:76489] 1----<NSThread: 0x600000260e80>{number = 1, name = main} 2017-01-03 11:02:01.538 MyTestWorkProduct[2013:76489] 2----<NSThread: 0x600000260e80>{number = 1, name = main} 2017-01-03 11:02:01.539 MyTestWorkProduct[2013:76489] 3----<NSThread: 0x600000260e80>{number = 1, name =

jQuery 的DOM操作

与世无争的帅哥 提交于 2019-12-27 00:02:43
DOM创建节点及节点属性 创建元素:document.createElement 设置属性:setAttribute 添加文本:innerHTML 加入文档:appendChild append()前面是被插入的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容,而后面是被插入的对象 before与after都是用来对相对选中元素外部增加相邻的兄弟节点 2个方法都是都可以接收HTML 字符串 , DOM 元素 , 元素数组 ,或者 jQuery对象 ,用来插入到集合中每个匹配元素的前面或者后面 2个方法都支持多个参数传递after(div1,div2,....) 可以参考右边案例代码 注意点: after向元素的后边添加html代码,如果元素后面有元素了,那将后面的元素后移,然后将html代码插入 before向元素的前边添加html代码,如果元素前面有元素了,那将前面的元素前移,然后将html代码插 append() 向每个匹配的元素内部追加内容 prepend() 向每个匹配的元素内部前置内容 appendTo() 把所有匹配的元素追加到另一个指定元素的集合中 prependTo() 把所有匹配的元素前置到另一个指定的元素集合中 insertAfter 将JQuery封装好的元素插入到指定元素的后面,如果元素后面有元素了,那将后面的元素后移