精华内容
下载资源
问答
  • JavaScript for循环元素取下标问题

    千次阅读 2019-02-25 11:25:00
    <ul> <li>fg</li> <li>gd</li> <li>gds</li> <li>ghe</li> <li>ghd</li> </ul> ...
    <ul>
        <li>fg</li>
        <li>gd</li>
        <li>gds</li>
        <li>ghe</li>
        <li>ghd</li>
    </ul>
    
                    
    var li = document.getElementsByTagName("li");
                for(var i=0;i<li.length;i++){
                    (function(m){
                        li[m].onclick = function(){
                            for(var j=0;j<li.length;j++){
                                li[j].className="";                    
                            }
                            li[m].className = "active";
                        }
                    })(i)
                    
                }
    var li = document.getElementsByTagName("li");
                for(var i=0;i<li.length;i++){
                        li[i].index = i;
                        li[i].onclick = function(){
                            for(var j=0;j<li.length;j++){
                                li[j].className="";                    
                            }
                            li[this.index].className = "active";
                        }
                }
    var li = document.getElementsByTagName("li");
                for(var i=0;i<li.length;i++){
                        
                        li[i].onclick = function(){
                            for(var j=0;j<li.length;j++){
                                li[j].className="";                    
                            }
                            this.className = "active";
                        }
                }

     

      

    转载于:https://www.cnblogs.com/whlBooK/p/10429922.html

    展开全文
  • 数组元素循环移动

    千次阅读 2018-04-18 16:51:09
    数组元素循环移动 数组元素循环移动分为循环左移和循环右移。由于两种情况类似。就以循环右移为例。 数组元素循环右移

    数组元素循环移动



    数组元素循环移动分为循环左移和循环右移。
    由于两种情况类似。就以循环右移为例。


    1. 目的

    将数组中的元素循环向右移动。

    2. 效果

    右移一位时,数组最后一个元素跑到了数组第一个位置,数组其余元素统一向后挪动一个位置。
    右移 m 位时,连续执行 m 次 “右移一位” 的操作。

    3. 示例

    现有整型数组

    A=[1,2,3,4,5,6]\color{DeepPink}{A = [ 1,2,3,4,5,6 ]}A=[123456]

    循环向右移动两次,得到的结果应该是

    A=[5,6,1,2,3,4]\color{DeepPink}{A = [ 5,6,1,2,3,4 ]}A=[561234]

    3.1 算法Ⅰ:循环单次右移一位

    基本思想:将数组元素循环右移 m 次,每一次的操作如下图

    下标 0 1 2 3 4 5
    元素 1 2 3 4 5 6

    一个整型变量 temp 保存最后一个位置的元素 temp=A[length−1]\color{DeepPink}{temp = A [length-1]}temp=A[length1]
    然后将其余元素从下标 length-2 到下标 0 的元素右移一个位置;

    下标 0 1 2 3 4 5
    元素 1 1 2 3 4 5

    将 temp中的值存放到数组下标 0 的位置;完成一次右移操作。

    下标 0 1 2 3 4 5
    元素 6 1 2 3 4 5

    C代码如下:

    	/* 函数功能:从控制台读入n个整型数据,存入数组中,并将数组循环右移m位 */
    	// 这里假设n>0,m>=0,是合法的数字。
    	void cyclicShiftRight(int n, int m)
    	{
    		// input.
    		int *testArray = (int*)malloc(sizeof(int) * n);
    		for (int i = 0; i < n; ++i)
    		{
    			// 如果报错,请尝试 scanf("%d", testArray + i);
    			scanf_s("%d", testArray + i);
    		}
    
    		// process.
    		/* 循环右移的结果和右移的前n(数组长度)个结果一致,所以做取余操作。*/
    		m = m % n;
    		
    		// 如果取余操作之后的m等于0,则不需要移动
    		if (0 == m)
    		{
    			// empty
    		}
    		// 如果取余操作之后的m不等于0,则需要右移
    		else
    		{
    			// 循环右移m次
    			for (int j = 1; j <= m; ++j)
    			{
    				// 先将最后一个元素(下标值为n-1的元素)保存在临时变量temp中
    				int temp = testArray[n - 1];
    				// 从倒数第二个元素到第一个元素,向右移动一个位置
    				for (int k = n - 2; k >= 0; --k)
    				{
    					testArray[k + 1] = testArray[k];
    				}
    				// 将temp中保存的元素值放入第一个位置(下标值为0)。
    				testArray[0] = temp;
    			}
    		}
    
    		// output.
    		for (int i = 0; i < n; ++i)
    		{
    			printf("%d", *(testArray + i));
    			if (i != n - 1)
    			{
    				printf(" ");
    			}
    		}
    		printf("\n");
    		free(testArray);
    		testArray = NULL;
    	}
    
    	int main()
    	{
    		// N是数组的大小(数组元素的个数)
    		int N = 0;
    		// M是循环右移的位数
    		int M = 0;
    		// 如果报错,请尝试 scanf("%d %d", &N, &M);
    		scanf_s("%d %d", &N, &M);
    		cyclicShiftRight(N, M);
        	return 0;
    	}
    

    3.2 算法Ⅱ:下标关系交换元素

    假设循环右移 2 次(循环右移 8 次与其结果一致,因为 8%6 == 2),正确结果应该如下表

    下标 0 1 2 3 4 5
    元素 5 6 1 2 3 4

    观察结果发现结果数组分为 2 个部分,一组有 2 个元素 “5” 和 “6” 保持有序,另一组 4 个元素 “1” 、“2”、“3” 和 “4” 保持有序。
    于是将原数组看作两个部分,一组有 2 个元素保持有序,另一组 4 个元素保持有序,结果如下

    下标 0 1 2 3 4 5
    元素 1 2 3 4 5 6

    将两个数组中的元素,每个部分数组第一个元素和自身最后一个元素交换,第二元素和倒数第二个元素交换,以此类推… …

    下标 0 1 2 3 4 5
    元素 4 3 2 1 5 6
    下标 0 1 2 3 4 5
    元素 4 3 2 1 6 5

    然后整个数组看作一个整体,执行以上操作

    下标 0 1 2 3 4 5
    元素 5 6 1 2 3 4

    此时得到了正确的结果。
    C代码如下:

    	/* 函数功能:交换数组testArray中下标firstIndex和下标secondIndex的元素*/
    	/* 这里假设传入的参数都是正确的,即testArray不能为空,firstIndex和secondIndex下标值是合法的(不能越界)。*/
        void swap(int testArray[], int firstIndex, int secondIndex)
    	{
    		// 如果firstIndex和second指向的是同一个下标,则不做任何动作;
    		if (firstIndex == secondIndex)
    		{
    			// empty block.
    		}
    		else
    		{
    			// 交换两个元素
    			int temp = testArray[firstIndex];
    			testArray[firstIndex] = testArray[secondIndex];
    			testArray[secondIndex] = temp;
    		}
    	}
    
    
    	/* 函数功能:将数组testArray下标从leftIndex到rightIndex,包含leftIndex和rightIndex的元素进行反转(翻转)。*/
    	/* 这里假设传入的参数都是正确的,即testArray不能为空,leftIndex和rightIndex下标值是合法且合理的(不能越界并且leftIndex < rightIndex)。*/
    	void ReverseArray(int testArray[], int leftIndex, int rightIndex)
    	{
    		/* 双“指针”--i和j */
    		/* i从leftIndex开始,往下标值增大的方向移动 */
    		/* j从rightIndex开始,往下标值减小的方向移动 */
    		int i = leftIndex;
    		int j = rightIndex;
    		
    		// 当满足 i<j 时,循环执行“交换testArray[i]和testArray[j]”的操作
    		while (i < j)
    		{
    			swap(testArray, i, j);
    			++i;
    			--j;
    		}
    	}
    
    	/* 函数功能:从控制台读入n个整型数据,存入数组中,并将数组循环右移m位 */
    	// 这里假设n>0,m>=0,是合法的数字。
    	void cyclicShiftRight(int n, int m)
    	{
    		// input.
    		// 这里假设都能分配成功。
    		int *testArray = (int*)malloc(sizeof(int) * n);
    		for (int i = 0; i < n; ++i)
    		{
    			// 如果报错,请尝试 scanf("%d", testArray + i);
    			scanf_s("%d", testArray + i);
    		}
    
    		// process.
    		/* 循环右移的结果和右移的前n(数组长度)个结果一致,所以做取余操作。*/
    		m = m % n;
    		
    		// 如果取余操作之后的m等于0,则不需要移动
    		if (0 == m)
    		{
    			// empty
    		}
    		// 如果取余操作之后的m不等于0,则需要右移
    		else
    		{
    			/* 将原数组看作两部分 */
    			/* 一部分下标从0到n-m-1,进行数组元素的反转 */
    			ReverseArray(testArray, 0, n - m - 1);  
    
    			/* 另一部分下标从n-m到n-1,进行数组元素的反转 */
    			ReverseArray(testArray, n - m, n - 1);  
    
    			/* 整个数组所有元素进行一次数组元素的反转 */
    			ReverseArray(testArray, 0, n - 1);
    		}
    
    		// output.
    		for (int i = 0; i < n; ++i)
    		{
    			printf("%d", *(testArray + i));
    			if (i != n - 1)
    			{
    				printf(" ");
    			}
    		}
    		printf("\n");
    		free(testArray);
    		testArray = NULL;
    	}
    
    	int main()
    	{
    		// N是数组的大小(数组元素的个数)
    		int N = 0;
    		// M是循环右移的位数
    		int M = 0;
    		// 如果报错,请尝试 scanf("%d %d", &N, &M);
    		scanf_s("%d %d", &N, &M);
    		cyclicShiftRight(N, M);
        	return 0;
    	}
    

    以上两种代码在Microsoft Visual Studio 2015 以及 Microsoft Visual Studio 2017上运行成功。


    4. 结论:

    第一种算法由于要移动大量(数组很大的时候)的元素,效率不如第二种高。第二种算法更高效,时间复杂度低,优先考虑。


    展开全文
  • List循环移除元素

    2017-04-28 10:33:33
    list中的元素移除在for循环中如果直接list.remove()。移除了一个元素之后,此元素之后所有的元素将全部往前面移动。但是for循环访问出现数组越界的异常!解决办法: 1:移除List中确定元素的方法,这里判断list中...

    现象:
    list中的元素移除在for循环中如果直接list.remove()。移除了一个元素之后,此元素之后所有的元素将全部往前面移动。但是for循环访问出现数组越界的异常!

    解决办法:
    1:移除List中确定元素的方法,这里判断list中的emai元素为空就移除
    这里写图片描述
    2:list移除另一个list中有的元素
    这里写图片描述
    通过迭代器移除list中的元素就可以避免for循环中直接移除的下标越界异常!

    展开全文
  • 循环队列元素个数

    万次阅读 多人点赞 2017-06-17 08:30:14
    1. 设有一个用数组Q[1..m]表示的环形队列,约定f为当前队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为() A、 (m+r-f)mod m B、 r-f C、 (m-r-f)...

    1. 设有一个用数组Q[1..m]表示的环形队列,约定f为当前队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为()

     

    A、  (m+r-f)mod m

    B、  r-f

    C、  (m-r-f)mod m

    D、  (m-r+f)mod m

     

    答案为: A 

    分析: 

     

          对于顺序队列,头指针和尾指针开始时刻都指向数组的0下标元素。当加入新元素以后,尾指针向后移动,指向最后一个元素的下一个位置。

    但是尾指针不能超过数组的最大范围。当有元素删除时,头指针向后移动。但是头指针不能低于数组的0下标。这样就会引入一种“假溢出”现象,

    数组中存在空余的空间,但是由于尾指针已经在最大位置,不能加入元素。

        循环队列就可以用来解决 假溢出 问题, 当队列后面的满了,就从头在开始,形成头尾相接的循环. 

        出现的问题:  front=rear即头指针和尾指针相等,但是对应两种情况:一种是队列是空,一种是队列是满。

        所以,我们定义循环队列中空出一个位置为满队列状态。front指向头元素,rear指向尾元素的下一个位置。

        那么循环队列的长度如何计算呢? 

         情况一:  当rear大于front时,循环队列的长度:rear-front

        情况二:  当rear小于front时,循环队列的长度:分为两部分计算 0+rear   和   Quesize-front  ,  将两部分的长度合并到一起即为: rear-front+Quesize

     

        所以将两种情况合为一种,即为:  总长度是(rear-front+Quesize)%Quesize

     

    展开全文
  • 循环删除数组元素

    千次阅读 2018-06-26 16:32:40
    按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可。但是实际情况往往不会像预想的那样顺利运行(1) splice函数(function () { var arr = [1,2,2,3,4,5]; var len = arr....
  • 数组元素循环左移

    千次阅读 2017-07-03 21:26:46
    要实现R中序列循环左移P个位置,只需先将R中前P个元素逆置,再将剩下的元素逆置,最后将R中所有元素再整体做一次逆置操作即可。 算法描述如下所示: #include #define N 50 using namespace std; void Reverse(int...
  • 之前博客记录过普通for循环中,针对...众所周知,我们使用v-for循环dom/组件,它有两个属性,item:当前循环的每一个元素,index:当前循环元素所对应的下标 个人习惯,平时绑定key值的时候,都习惯采用如下写法,...
  • Selenium 循环删除页面元素

    千次阅读 2019-07-22 23:05:50
    之所以不能用for 循环删除的原因是元素删除后页面会重新渲染; 取出所有的元素,使用while循环依次删除数组里的第一个元素,直到全部删除 from selenium import webdriver import time dr = webdriver.Chrome() ...
  • Java中for循环删除元素

    千次阅读 2019-05-06 22:17:22
    1.常用for循环删除元素。 for(int i=0;i<list.size();i++){ if(list.get(i).equals("delele")) list.remove(i); } 注:这种方法可以删除元素,但是删除的同时索引在增加,列表的size在减小,导致最后会漏删 ...
  • Java List 循环移动元素

    千次阅读 2016-11-07 09:04:32
    以下实例演示了如何使用 Collections 类的 rotate() 来循环移动元素,方法第二个参数指定了移动的起始位置:/* author by w3cschool.cc Main.java */import java.util.*;public class Main { public static void ...
  • ArrayList循环删除元素的方法总结

    千次阅读 2018-10-27 19:56:58
    一、遍历List集合的三种方式 JAVA中循环遍历list有三种方式:for循环、增强for循环...二、循环删除元素问题及比较分析 创建ArrayList: List&lt;String&gt; list = new ArrayList&lt;String&g...
  • 计算循环队列元素个数

    千次阅读 2019-11-06 22:58:42
    计算循环队列元素个数 zz因为rear的值不一定比front的直大,所以说他俩的差值有可能得到的是负值,故采用这种取模的方式。二如果说rear在正常情况下大于front德华,那么rear与front的差值就是队列的长度 图示解析: ...
  • c++循环删除map元素

    千次阅读 2019-06-04 09:41:31
    写c++循环删除map,list等元素时,需要注意的细节: // 这里的调用是在同一个线程里的,所以这里不用考虑互斥处理。 tagRtspData* item = NULL; map<SSocketKey, tagRtspData>::iterator it; for (it=...
  • Java for循环删除ArrayList重复元素陷阱,Iterator迭代器遍历删除重复元素这是一个一不留神就犯下错误的Java列表ArrayList重复删除元素陷阱,并且问题比较隐蔽。问题描述,假设一个ArrayList存储若干个字符串String...
  • List循环中删除元素

    千次阅读 2018-08-17 17:03:50
    普通的循环中是不能删除元素的,如下 import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.junit.Before; import org.junit.Test; public class ...
  • for循环list remove元素

    千次阅读 2019-01-01 17:55:42
    for(int i=0;i&lt;list.size();i++){ if(list.get(i).equals("del")) list.remove(i);...比如当你删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的元素都往前移...
  • 在使用增强for循环时,在循环体内移除一个集合元素后,出现concurrentModificationException异常的解决办法
  • 循环添加DOM元素

    千次阅读 2017-12-13 10:28:24
    const rankingList = this.state.mingxiData.map(v=&gt;{ return &lt;div key={v.userId} id={v.userId}&gt; &lt;div className="mingxi-content-list"&...min...
  • Java 循环删除list中指定元素

    万次阅读 2019-03-01 14:16:00
    Java 循环删除list中指定元素1.for循环遍历删除指定元素2.增强for循环删除指定元素3.iterator删除指定元素 1.for循环遍历删除指定元素 List&lt;String&gt; list = new ArrayList&lt;&gt;(Arrays....
  • 数组元素循环输出

    千次阅读 2014-03-25 16:13:37
    【题目】一个数组,一个数组a[N],如1,2,3,4...12345 也就是说后一次输出的顺序是在前一次输出的基础上,每个元素向右循环平移了 1 位。 int a[5] = {1,2,3,4,5}; for(int i=0;i;++i)//控制输出M次 { int k = 0
  • R语言列表循环添加元素

    万次阅读 2017-03-07 19:32:18
    #列表循环添加元素 lst () n for(i in 1:10) { lst[[i]] n } > lst [[1]] [1] 1 [[2]] [1] 2 [[3]] [1] 3 [[4]] [1] 4 [[5]] [1] 5 [[6]] [1] 6 [[7]] [1] 7 [[8]] [1] 8 [[9]] [1] 9
  • 关于JS数组循环删除元素

    千次阅读 2019-04-08 15:24:15
    解决方法: 循环数组,再用 splice 方法删除 , 但是删除c的时候会发现数组的长度和下标都已经发生改变 , 所以这个方法要改进一下 。 用逆向循环。 for (var i = arr.length - 1; i >= 0; i--) { if (判断...
  • 将数组中的元素循环左移 p 个元素

    千次阅读 2016-06-20 14:45:07
    解1:可以将这个问题看作是把数组ab转换成ba(a代表数组的前 p 个元素,b 代表数组中余下的 n-p个元素) ... 设Reverse函数执行将数组元素逆置的操作,对abcdef向左循环移动 3 (p=3)个位置的过程如下:  
  • for循环中移除元素问题

    千次阅读 2018-10-31 19:22:15
    for循环中移除元素一般会报错 java.util.ConcurrentModificationException 还是建议用iterator 但是之前有个逻辑用到了类似结构居然没报错 仔细一看 原来for循环中加了break所以被改变的list不会访问第二次也就...
  • list循环改变元素的值写法

    千次阅读 2017-08-03 19:37:24
    for循环可以修改对象内容 , 但是重新赋值无效 , 另外不可以删除和新增元素 集合或者数组中 , 存放的是对象的引用 , 而不是对本身 , 对于字符串来说 , 存的就是这个字符串, 而不是这个字符串对象 如果你在循环中修改...
  • selenium循环点击无法定位元素问题

    千次阅读 2019-01-09 19:35:55
    【问题】:selenium循环点击进入下级页面时,第一次点击返回后不能继续循环,无法定位元素。 【原因】:selenium模拟点击进入下一页操作后退出,原页面...2.第一次获取全部元素后,通过len()函数获取循环总个数; 3...
  • 1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,893
精华内容 19,957
关键字:

循环元素