首页 > TAG信息列表 > EndIndex

优化列表删除元素操作 (C#)

边遍历边删除, 前几天面试的时候被问到了这个问题。 今天研究了一下。 当时的解法是定义EndIndex作为结束标识,默认等于列表的Count 在for循环中不以列表的Count作为结束标识,而是使用EndIndex作为结束标识。 在检测到需要被删除的元素时,将该元素与尾部元素(EndIndex-1对应的元素)交换

《漫画算法》源码整理-5 排序算法

冒泡排序 import java.util.Arrays; public class BubbleSort { public static void sort(int array[]) { int tmp = 0; //记录最后一次交换的位置 int lastExchangeIndex = 0; //无序数列的边界,每次比较只需要比到这里为止

利用Fork-Join计算1-100的和 ,会把数组放入数组

/** * @Author zh * @Description 利用Fork-Join计算1-100的和 ,会把数组放入数组 * @Date 2021/12/14 */ /* 一个大的任务拆分成多个子任务进行并行处理, 最后将子任务结果合并成最后的计算结果,并进行输出。 */ public class MyTask extends RecursiveTask<Integer>{ //

如何使用一个数组实现一个栈结构呢?

下文是笔者采用数组实现栈结构的方法分享,如下所示: 栈结构简介: 栈是一个先入后出(FILO-FirstInLastOut)的有序列表。 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表 允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底

二分查找

public class Test5 { public static void main(String[] args) { int[] nums={0,1,2,3,4,5,6,7,8,9}; //0,1,2,3,4, 中间元素 5,6,7,8,9 //5,6, 7, 8,9 //8, 9 //9 int keys=9;//寻找7 int startIndex=0; int endI

LeetCode 370. 区间加法(Range Addition)

假设你有一个长度为 n 的数组,初始情况下所有的数字均为 0,你将会被给出 k 个更新的操作。 其中,每个操作会被表示为一个三元组:[startIndex, endIndex, inc],你需要将子数组 A[startIndex ... endIndex](包括 startIndex 和 endIndex)增加 inc。 请你返回 k 次操作后的数组。 示例:

Unity 图文排版、超链接

先看效果:     再看代码: using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; /// <summary> /// 文本控件,支

华为机试题: IPv6地址压缩

题目 IPv6 的地址格式如下: XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX的格式,它是128位的,用":"分成8段,每段包含4个X是一个16进制数(0-9,A-F),全部大写,如下就是一个IPv6地址: IPv6地址一般较长,IPv6提供了一些规则来压缩地址,规则如下: -规则1:丢弃前导零。 -规则2:如果两个或者多个块包含

Implementing Iterators in Java

迭代器是一种很好用的迭代元素的方法,常用于Arraylist等Colloctions集合元素的迭代,如果需要自己实现迭代方法,能用foreach,就很漂亮了。代码如下。 import java.util.*; @SuppressWarnings("unchecked") // Demo是一个动态数组类,要实现迭代器的功能必须实现Iterable接口并写一些配

Java 练习(将字符串中指定部分进行反转)

将一个字符串进行反转。将字符串中指定部分进行反转。比如"abcdefg"反转为"abfedcg" package com.klvchen.exer; import org.junit.Test; public class StringDemo { /* 将一个字符串进行反转。将字符串中指定部分进行反转。比如"abcdefg"反转为"abfedcg" 方式一:

LeetCode题库相关练习

using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Net;using System.Text;using System.Threading.Tasks;   namespace ConsoleApplication1{    #region 2 两数相加 //class Node<T> //{ // private int

java基础一之String类

常用方法: public int length () :返回此字符串的长度 public String concat (String str) :将指定的字符串连接到该字符串的末尾。 public char charAt (int index) :返回指定索引处的 char值。 public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。 pub

iOS简单的插入排序算法浅析

实际开发中移动端能够遇到的算法,十之八九那就是排序算法了~ ,碰巧刚刚利用插入排序算法解决了一个bug,故此记录一笔 场景1: 起始下标大于结束下标的插入 场景2: 起始下标小于结束下标的插入 ... id startObj = tempArr[startIndex]; ///MARK:- 此处

JDK1.8的String详解

1.String.substring()方法 substring(beginIndex,endIndex) 方法返回字符串的子字符串。 beginIndex -- 起始索引(包括), 索引从 0 开始。 endIndex -- 结束索引(不包括)。 再JDK1.7+中实际是重新创建了一个字符数组 String.substring()有两个方法 实现方法 判断beginIndex和e

图解快速排序(c++、递归)

假设有如下数组: A = {15,10,6,1} B = {1} C = {20,5} 对数组进行从小到大的排序,随机取一个数组里的值记为BaseValue, 然后将所有小于BaseValue值放在左边,所有大于BaseValue的放在右边(相等的就不动了)。 对于数组B来说不用进行操作就完成了目标,对于C来说进行一次上述操作就能完成

js快速排序算法

// 快速排序算法:关键在于定义基准元素,头尾元素与基准元素对比,定义头尾元素下标,头小右移,头大停止,尾大左移,尾小停止,头大尾小元素交换 function partition(arr, startIndex, endIndex) { var pivot = arr[startIndex]; var left = startIndex; var

快速排序

快速排序 什么是快速排序 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。 步骤为: 挑选基准值:从数列中挑出一个元素,称为“基准”(pivot), 分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大

js的trim函数实现

js没有去掉字符串两侧空格的方法。要实现这一效果目前想到2种方式,一个是正则匹配,还一个是循环字符串判断两边是否空格。 当然还要注意区分英文空格、中文空格、tab空格、连续空格的概念,这里只以英文空格为例。 正则方式: function trim(str) { return str.replace(/^\s*/,"");/

【java】字符串截取

String a = 'abcdef';String a = a.substring(0,1);a = 'a';substring(int beginIndex, int endIndex) beginIndex -- 起始索引(包括)。 endIndex -- 结束索引(不包括)。  

算法 - 求最大连续子数组和起始下标

执行代码参见GitHub https://github.com/GloryXu/algorithm/tree/master/src/main/java/com/redsun/algorithm/subarraysum 逛论坛无意中发现一个算法帖子,一时间也没想出更好的解决方式,搜索了下,整理下。 暴力破解 @Override public void execute() { fo

旋转数组的最小数字(Java)

public class E11RotateInOrderNumbers { //寻找某数组旋转数组中最小数字 //特殊情况:移动0个元素;数组中存在重复的数字 public static int getMin(int[] numbers, int length){ if (numbers == null || length <= 0) throw new Illegal

Python_字符串相关操作

1.字符串切片操作: str1='hello word'startIndex=0 #开始索引位置endIndex=5 #结束索引位置+1step=2 #步长print(str1[startIndex:endIndex]) #结果:hello ,startIndex:开始索引位置,endIndex:结束索引位置+1print(str1[:5]) #结果:hello,如果开始索引位置为0,可以省略不写pri

两数之和 II - 输入有序数组

很久没有刷leetcode,习惯不能丢。 打算继续保持,从海外转到“力扣”,继续完成。   一、题目描述 二、解答   根据题意,有序数组,并且都是有解的。   如果单纯一个一个比对,也能找到想要的结果,只不过算法复杂度最高。   先确定左值,现在的题目就变成在有序数组中寻找一个数了;   

旋转数组

leetcode 189  给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]先把前n-k个数字转置,再把后k

Unity Text 插入图片

当前测试版本:Unity 5.2.0   Unity 新 UI 系统中的 Text 组件支持富文本标签,标签包括 b(黑体)、i(斜体)、size(大小)、color(颜色),并不支持图片的直接插入。但官方文档提到可以对 Text Mesh 插入贴图,文档说明如下: quad   This is only useful for text meshes and renders an imag