精华内容
下载资源
问答
  • Python循环数组方法

    2020-12-03 07:57:48
    最近在刷LeetCode,之前C语言的语法忘得快差不多了,现在经常使用Python代码,而用Python关于数组方面的算法免不了使用循环,这里简单总结下Python的遍历数组的三种方式。 遍历方式 假设:nums=[4,5,6,10,1] ...

    前言

    最近在刷LeetCode,之前C语言的语法忘得快差不多了,现在经常使用Python写代码,而用Python写关于数组方面的算法免不了使用循环,这里简单总结下Python的遍历数组的三种方式。

    遍历方式

    假设:nums=[4,5,6,10,1]

    #第一种,for in的语法,这种语法很方便,但是在写Python算法里面用到的少
    for num in nums:
      print num
    
    #第二种是下标访问,range生成0到数组最大长度的下标数组
    for index in range(len(nums)):
      print index,nums[index]
    
    #第三种是enumerate生成索引序列序列,包含下标和元素
    for index,num in enumerate(nums):
      print index, num

    实际的算法面试中经常会使用第二种和第三种。

    我们看下二和三的耗时。

    import time
    nums=range(1000000)
    
    start=time.time()
    for index in range(len(nums)):
      a = nums[index]
    end=time.time()
    cost = end - start
    print cost
    
    
    start=time.time()
    for index,num in enumerate(nums):
      a = nums
    end=time.time()
    cost = end - start
    print cost

    遍历方式二:0.122675895691s
    遍历方式三:0.114228963852s

    可以看出第三种比第二种的性能稍微好一些,可能在数据量更大的时候会更好。

    传送门:2021最新测试资料与大厂招聘合集

    博主:测试生财(一个不为996而996的测开码农)

    座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。

    内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。

    csdn:https://blog.csdn.net/ccgshigao

    博客园:https://www.cnblogs.com/qa-freeroad/

    51cto:https://blog.51cto.com/14900374

    微信公众号:测试生财(定期分享独家内容和资源)

    展开全文
  • 分析:对于这个问题很容易想到的一种方法是依次循环右移,但是这样的话时间复杂度是O(kn),明显不符合题目要求,在之前的博客中,我的对于字符串的移位问题,可以借助里面方法三步反转法。第一步:根据n和k求出...

    问题描述:把一个数组中的元素循环右移k位,时间复杂度严格为O(n),不能是O(kn).

    分析:对于这个问题很容易想到的一种方法是依次循环右移,但是这样的话时间复杂度是O(kn),明显不符合题目要求,在之前的博客中,我写的对于字符串的移位问题,可以借助里面的方法三步反转法。

    第一步:根据n和k求出分界点的下标,假设为index,则index=n-k(数组下标从0开始),将整个数组分为两部分,0~index-1和index~n-1,

    第二步:将0~index-1部分反转。

    第三布:将index~n-1部分反转。

    第四步:将整个数组反转。

    具体的Java实现代码如下:

    public class Main {

    public static void removerightk(int a[],int k){

    if(k<0)return; //如果k小于0,则退出

    k=k%a.length; //由于k可能大于n,所以将k化为1~n之间

    int index=a.length-k;

    reverse(a,0,index-1);

    reverse(a,index,a.length-1);

    reverse(a,0,a.length-1);

    }

    public static void reverse(int a[],int s,int e){

    while(s

    int t=a[s];

    a[s]=a[e];

    a[e]=t;

    s++;

    e--;

    }

    }

    public static void main(String[] args) {

    int a[]={0,1,2,3,4,5,6,7,8,9};

    removerightk(a, 2);

    for(int i=0;i

    System.out.print(a[i]+",");

    }

    }

    展开全文
  • 在java.util.*中,Arrays似乎很有用的样子,似乎用里面方法就可以避免使用for循环要自己数组的查找、初始化、排序等方法了。 一、先说说Arrays中对整形数组真的有用的方法 1、首先是Arrays.toString() 一般...

    在java.util.*中,Arrays似乎很有用的样子,似乎用里面的方法就可以避免使用for循环要自己写对数组的查找、初始化、排序等方法了。

    一、先说说Arrays中对整形数组真的有用的方法

    1、首先是Arrays.toString()

    一般,直接用System.out.println()打印数组,比如这样:

    int array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 };
    System.out.println(array);
    出来的结果是一堆乱码:

    [Ljava.lang.Integer;@4f19c297

    整形数组不像ArrayList<Integer>那样可以直接打印,

    但是如果写成这样:

    int array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 };
    System.out.println(Arrays.toString(array));
    就真的可以打印成:

    [8, 7, 100, 88, 6, 4, 5, 33, 10]

    因此,使用Arrays.toString()能够有效地避免写一个for循环

    2、Arrays.fill();使得一个值填充一个数组。例如:

    int array_init[]=new int[20];
    Arrays.fill(array_init, 0);
    System.out.println(Arrays.toString(array_init));
    打印出来则是20个0,也就是此时array_init的值,这个方法在数组初始化的时候略有用,可以避免一个for循环……

    3、Arrays.copyOf();则提供了把一个数组的元素复制到另一个数组当中,里面还可以带一些参数,指定复制范围,可以避免使用for循环来完成这个操作,这个没有什么意义,实际操作中很少用。

    二、然而Arrays中也对很多整形数组没叼用的方法

    1、虽说里面的Arrays.binarySearch();提供了查找功能,但实际上这个方法并不返回当前的你要查找的元素的位置,它是返回你要查找的元素在这个数组升序排列之后的位置,找不到则返回-1,但是不知道为何下面一段程序:

    int array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 };
    System.out.println(Arrays.toString(array));
    System.out.println(Arrays.binarySearch(array,7));
    Arrays.sort(array);
    System.out.println(Arrays.toString(array));
    System.out.println(Arrays.binarySearch(array,7));
    输出一个-8一个3,明明7在排序前排序后都在这个数组里面啊!
    2、Arrays.sort();提供了数组升序排序功能

    但是没有降序排序功能,有人试图用Arrays.sort(array, Collections.reverseOrder());去解决这个问题,但是这段代码对于int array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 };是编译不通过的,对于Integer array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 };才OK,比如:

    Integer array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 };
    System.out.println(Arrays.toString(array));
    Arrays.sort(array, Collections.reverseOrder());
    System.out.println(Arrays.toString(array));
    则输出:

    [8, 7, 100, 88, 6, 4, 5, 33, 10]
    [100, 88, 33, 10, 8, 7, 6, 5, 4]

    明显达到我们想要的效果,但是如果把数组从Integer换成int则是不行的,虽然JDK1.5之后什么Integer数组与int数组是系统自动识别的,然后什么方法都没有提供,网上还说这样转换没有实际意义,但是实际上却在这样的语句中编译不通过,对于int的降序排序你还是要老老实实地写for循环,或者用我上次在《【Java】Java中的Collections类——Java中升级版的数据结构》(点击打开链接

    3、至于Arraylist与int数组的互相转换就别想了,还是要老老实实用for循环,只有Integer数组才有特定的方法,Arraylist中的toArray()与Arrays中的asList()根本不知道意义何在?貌似在强推Integer数组取代int数组?毕竟Integer数组中的方法更多。但是教科书上还是一堆int数组的教学。

    展开全文
  • 数组循环移位问题

    2016-07-01 17:34:00
    分析:对于这个问题很容易想到的一种方法是依次循环右移,但是这样的话时间复杂度是O(kn),明显不符合题目要求,在之前的博客中,我的对于字符串的移位问题,可以借助里面方法三步反转法。 第一步:根据n和k求...

    问题描述:把一个数组中的元素循环右移k位,时间复杂度严格为O(n),不能是O(kn).

    分析:对于这个问题很容易想到的一种方法是依次循环右移,但是这样的话时间复杂度是O(kn),明显不符合题目要求,在之前的博客中,我写的对于字符串的移位问题,可以借助里面的方法三步反转法。

            第一步:根据n和k求出分界点的下标,假设为index,则index=n-k(数组下标从0开始),将整个数组分为两部分,0~index-1和index~n-1,

            第二步:将0~index-1部分反转。

            第三布:将index~n-1部分反转。

            第四步:将整个数组反转。

    具体的Java实现代码如下:

    public class Main {
        public static void removerightk(int a[],int k){
        	if(k<0)return;                  //如果k小于0,则退出
        	k=k%a.length;                   //由于k可能大于n,所以将k化为1~n之间
        	int index=a.length-k;
        	reverse(a,0,index-1);
        	reverse(a,index,a.length-1);
        	reverse(a,0,a.length-1);
        }
        public static void reverse(int a[],int s,int e){
        	while(s<e){
        		int t=a[s];
        		a[s]=a[e];
        		a[e]=t;
        		s++;
        		e--;
        	}
        }
    	public static void main(String[] args) {
    	 int a[]={0,1,2,3,4,5,6,7,8,9};
    	 removerightk(a, 2);
    	 for(int i=0;i<a.length;i++)
    		 System.out.print(a[i]+",");
    
    	}
    }
    

      

    转载于:https://www.cnblogs.com/guozhenqiang/p/5633867.html

    展开全文
  • (要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可,只做参考); 先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是讲数组里面重复的元素...
  • (要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可,只做参考); 先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是讲数组里面重复的元素...
  • 其实在使用了好一段时间的 python之后,我觉得最让我念念不忘的并不是python每次在函数或者循环的时候可以少用{}括号这样的东西(ps:其实也是了。。感觉很清爽,而且又开始js的时候老是想用xxx in range(): ......
  • (要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可,只做参考);先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是讲数组里面重复的元素去掉,...
  • 有一个动态数组,[adfjsf,ad2fjsf,adf32jsf,ad4fjsf,ad523fjsf,a523dfjsf,ad423fjsf,adfjs234f,......]我想查查数组是否有...就在网上搜了一下,发现两个别人的博文,里面方法很好:1.JS暴虐查找法例如在一个含5...
  • (其实for循环只能拷贝简单的非对象数组而已,如果数组里面有数组或对象也不行,只是本篇不讨论对象深浅拷贝的问题),觉得起来很麻烦,偶然情况下发现slice方法也可以拷贝(原谅我的无知,以前确实只用了for循环...
  • PHP数组

    2021-02-15 22:31:40
    数据里面还可放数组类型的数据,同一个数组中存储任何类型的数据 多维数组: 访问数值的方法 变量名称[索引值][索引值]… 三、数组的遍历 遍历数组:每个都经历一遍的意思 1)for循环 用的比较少,因为有缺陷 2)...
  • (要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可,只做参考); 先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是讲数组里面重复的元素...
  • 个函数,参数为n和val,需要返回一个长度为n的数组里面的每个元素都是val,不能使用循环方法1 函数:function gzq(n,val){ console.log(Array.apply(null, Array(n)).map(function(item, i) {return val;})) }...
  • 反转数组

    2020-11-25 09:36:33
    ​ 新建一个reserse方法方法名可以随意创建),new一个新数组他的数组长度对应你在主函数体中定义的长度,接下来就是反转,用循环: ​ 如果把循环里面的j变量去掉不难理解,加上j变量之后 ​ ...
  • 实现数组去重的方法很多,最原始的方法是一个值一个值的去遍历,到空数组里面: let r=[],arr = ['a', 'b', 'c', 'a']; for(var i=0,len=arr.length;i<len;i++){ if(r.indexOf(arr[i])===-1){ r.push(arr[i]...
  • # 使用for循环来输入3个学生信息,用i来获取循环的下标然后传入数组里面,可是刚我运行了一下,只有最后一个值传入进数组了,之前输入的两个值没有传入 ## 这个是属性和方法类_ ![图片说明]...
  • 数组操作

    2017-07-31 17:17:00
    这个方法是在太多了,我之前的文章(js数组操作–使用迭代方法替代for循环,js关键词变色,数组打乱,数组去重的实现和封装)也有提到,我今天这里就一种之前没用过的方法。 //ES6新增的Set数据结构,类似于数组,...
  • (给算法爱好者加星标,修炼编程内功)作者:苍痕blog.csdn.net/wangbaochu/article/details/52949443【前言】找一个无序数组里面的第 K 大数,你有什么好方法吗?本文介绍了五种可行的方案,希望能对大家有所启发,...
  • 好程序员web前端培训之JavaScript数组去重方法,一周学习结束,老师布置我们要一篇技术文章,脑袋里面的第一个想法就是数组去重,在网上也百度了一下,很多公司面试的时候有很大的几率会问数组去重的问题。...
  • js数组去重

    2019-10-03 08:45:37
    (要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可,只做参考); 先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是讲数组里面重复的元素...
  • VBA中实现数组排序的多种方法

    万次阅读 2015-08-25 09:40:59
    VBA里面没有现成的Sort方法可以...3,直接写循环语句通过算法来实现。除了上述方法以外,借助一些其他语言工具与VBA相结合,也能利用现成的排序功能来实现数组排序,而不需要借助表格。 例如JavaScript:JavaScript里
  • // // 如果查找结果是-1表示空数组里面没有原始数组循环遍历的那一项,然后把遍历的哪一项push到空数组里。 // // 一直往空数组里面添加符合条件indexof等于-1的项,生成的新数组。这个新数组就是去重后的数组. /...
  • 大致可以用以下几种不同的模式LOOP方式通过循环代码生成大数组里面的每一个元素是最简单的方法。常用的有for,while,do-while。基本的操作大同小异,先生成一个空数组或者指定长度的数组。然后采用push往空数组中...
  • 判断数组A是否是数组B的子集

    千次阅读 2019-01-18 14:37:10
    今天遇到个面试题:A、B是两个数组里面全是数字,并且按照顺序排列;一个方法判断A是否是B的子集。要求不能用原生方法 当时不知道咋想的了,反正一塌糊涂,回来整理下思路 这个肯定是要循环比较的 function is...
  • 递归,简单解释就是在函数内部调用...3、判断如果数组里面的随机数和新生成的随机数不重复就push进去,否则就重新生成随机数 开始代码: let arr = []; function RandomArr(num, min, max) { if(num <=0) retu...
  • 今晚做了下某公司的网络笔试题,好久没刷题了,现在渣得要死,里面有道程序设计题是把一个数组向右循环移动k位要求时间复杂度为O(n) 给的方法定义为 public void solution(int a[],int length,int k) 我当时...
  • 本渣有次给一个二维数组赋值时,编译器报错了,于是在网上瞎找. 结果很快就点进了这里:C#如何给二维数组循环赋值 当时也没太注意,后面仔细看...后来我想既然你转圈那我也就转圈吧,于是先把“转圈”的方法写出来:

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 209
精华内容 83
关键字:

方法里面写循环数组