【数据结构与算法】List接口&栈&队列

Android SystemUI——初始化流程(三) 1、Android 系统在启动之后,首先会Zygote进程,Zygote进程又会进一步启动 SystemServer进程,它会启动各种系统所需要的服务,在监听AMS启动完毕之后,还会启动SystemUIService。2、在启动SystemUIService服务之前,系统首先会创建SystemUI对应的进程,获取SystemUIAppComponentFactory实例对象,调用instantiateApplicationCompat创建SystemUIApplication实例对象并设置回调方法。 阅读详情

List接口

List 接口继承自 Collection 接口,其中定义了一个用于顺序存储元素的合集,我们可以使用它的两个具体类 ArrayList 或者 LinkedList 来创建一个线性表

方法名及返回类型描述
add(index: int, element: Object) : boolean在指定索引位置处增加一个新元素
addAll(index: int, c: Collection<? extends E>) : boolean在指定索引位置处添加 c 中的所有元素
get(index: int) : E返回该线性表指定索引位置处的元素
indexOf(element: Object) : int返回第一个匹配元素的索引
lastIndexOf(element: Object) : int返回最后一个匹配元素的索引
listIterator() : ListIterator<E>返回针对该线性表元素的迭代器
listIterator(startIndex: int) : ListIterator<E>返回针对从 startIndex 开始的元素的迭代器
remove(index: int) : E移除指定索引位置处的元素
set(index: int, element: Object) : Object设置指定索引处的元素
subList(fromIndex: int, toIndex: int) : List<E>返回从 fromIndex 到 toIndex-1 的子线性表

ArrayList和LinkedList

数组线性表类 ArrayList 和链表类 LinkedList 是实现 List 接口的两个具体类

ArrayList 用数组存储元素,这个数组是动态创建的。如果元素个数超过了数组的容量,就创建一个更大的新数组,并将当前数组中的所有元素都复制到新数组中,而 LinkedList 则是在一个链表中存储元素

要选用这两种类中的哪一个依赖于特定需求。如果需要通过下标随机访问元素,而不会在线性表起始位置插入或删除元素,那么 ArrayList 提供了最高效率的合集。但是,如果应用程序需要在线性表的起始位置上插入或删除元素,就应该选择 LinkedList 类

ArrayList 的构造方法和其特有方法:

方法名描述
ArrayList()使用默认的初始容量创建一个空线性表
ArrayList(c: Collection<? extends E>)从已有的合集中创建一个线性表
ArrayList(initialCapacity: int)创建一个指定初始容量的空线性表
trimToSize() : void将该 ArrayList 实例的容量裁剪到该线性表当前大小

LinkedList 的构造方法和其特有方法:

方法名描述
LinkedList()创建一个默认的空线性表
LinkedList(c: Collection<? extends E>)从已有的合集种创建一个线性表
addFirst(o: E) : void添加元素到该线性表的头部
addLast(o: E) : void添加元素到该线性表的尾部
getFirst() : E返回该线性表的第一个元素
getLast() : E返回该线性表的最后一个元素
removeFirst() : E从线性表中返回并删除第一个元素
removeLast() : E从线性表返回并删除最后一个元素

我们写一个程序来感受一下:

import java.util.*;

public class TestArrayAndLinkedList {
    public static void main(String[] args) {
        List<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(0, 10);
        arrayList.add(3, 30);
        System.out.println("A list of integers in the array list:");
        System.out.println(arrayList);

        LinkedList<Object> linkedList = new LinkedList<>(arrayList);
        linkedList.add(1, "red");
        linkedList.removeLast();
        linkedList.addFirst("green");
        System.out.println("Display the linked list backward:");
        for (int i = linkedList.size() - 1; i >= 0; --i) {
            System.out.print(linkedList.get(i) + " ");
        }
    }
}

运行结果如下:

Comparator接口

Java API 的一些类,比如 String、Date、Calendar、BigInteger、BigDecimal 以及所有基本类型的数字包装类都实现了 Comparator 接口。Comparator 接口中定义了 compareTo 方法,用于比较实现了 Comparable 接口的同一个类的两个元素

如果元素的类没有实现 Comparable 接口又将如何呢?这些元素可以比较吗?我们可以定义一个比较器(Comparator)来比较不同类的元素。要做到这一点,需要创建一个实现 java.util.Comparator<T> 接口的类并重写它的 compare 方法

public int compare(T element1, T element2)

如果 element1 小于 element2,就返回一个负值;如果 element1 大于 element2,就返回一个正值;如果两者相等,则返回 0

线性表和合集的静态方法

Collections 类(不是 Collection接口)包含了执行合集和线性表中通用操作的静态方法

Collections 类包含用于线性表的 sort、binarySearch、reverse、shuffle、copy 和 fill 方法,以及用于合集的 max、min、disjoint 和 frequency 方法,如下表所示

方法描述
sort(list: List) : void对指定的线性表进行排序
sort(list: List, c: Comparator) : void使用比较器对指定的线性表进行排序
binarySearch(list: List, key: Object) : int采用二分查找来找到排好序的线性表中的键值
binarySearch(list: List, key: Object, c: Comparator) : int使用比较器,采用二分查找来找到排好序的线性表中的键值
reverse(list: List) : void对指定的线性表进行逆序排序
reverseOrder() : Comparator返回一个逆序排序的比较器
shuffle(list: List) : void随机打乱指定的线性表
shuffle(list: List, rmd: Random) : void使用一个随机对象打乱指定的线性表
copy(des: List, src: List) : void复制源线性表到目标线性表中
nCopies(n: int, o: Object) : List返回一个由 n 个对象副本组成的线性表
fill(list: List, o: Object) : void使用对象填充线性表
max(c: Collection) : Object返回合集中的 max 对象
max(c: Collection, c: Comparator) : Object使用比较器返回 max 对象
min(c: Collection) : Object返回合集中的 min 对象
min(c: Collection, c: Comparator) : Object使用比较器返回 min 对象
disjoint(c1: Collection, c2: Collection) : boolean如果 c1 和 c2 没有共同的元素,则返回真
frequency(c: Collection, o: Object) : int返回合集中指定元素的出现次数

下面的代码是对线性表中的字符串进行排序:

import java.util.*;

public class test {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("red", "green", "blue");
        Collections.sort(list);
        System.out.println(list);
    }
}

执行结果如下:

如果想要降序排列,我们可以简单地使用 Collection.reverseOrder() 方法,它会返回一个 Comparator 对象,该方法以逆序排列元素,下面是一段简单的降序排列的代码:

import java.util.*;

public class test {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("red", "green", "blue");
        Collections.sort(list, Collections.reverseOrder());
        System.out.println(list);
    }
}

执行结果如下:

队列和优先队列

队列(queue)是一种先进先出的数据结构,元素被追加到队列末尾,然后从队列头删除。在优先队列(priority queue)中,元素被赋予优先级。当访问元素时,拥有最高优先级的元素最先被删除

将LinkedList作为队列使用

JFC 中并没有提供具体的队列类,而只是提供了 Queue 接口和 Deque 接口,而具体类 LinkedList 继承了 Deque 接口,而 Deque 接口又继承了 Queue 接口,事实上 LinkedList 可以作为队列使用

import java.util.*;

public class TestQueue {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        queue.offer("red");
        queue.offer("green");
        queue.offer("blue");
        queue.offer("cyan");

        while (queue.size() > 0) {
            System.out.print(queue.remove() + " ");
        }
    }
}

执行结果如下:

实现栈和队列

需求:

  • 实现栈 GenericStack:
方法名描述
GenericStack()创建一个空的栈
getSize() : int返回栈中元素的数量
peek() : E返回栈顶的元素
pop() : E返回并删除栈顶的元素
push(o: E) : void往栈顶添加一个元素
isEmpty() : boolean如果栈为空,返回 true

具体代码如下:

import java.util.*;

public class GenericStack<E> {
    private final ArrayList<E> list;

    public GenericStack() {
        list = new ArrayList<>();
    }

    public int getSize() {
        return list.size();
    }

    public E peek() {
        return list.get(getSize() - 1);
    }

    public void push(E o) {
        list.add(o);
    }

    public E pop() {
        E o = list.get(getSize() - 1);
        list.remove(getSize() - 1);
        return o;
    }

    public boolean isEmpty() {
        return list.isEmpty();
    }
}

  • 实现队列 GenericQueue:
方法名描述
enqueue(e: E) : void添加一个元素到队列中
dequeue() : E从队列中移除一个元素
getSize() : int返回队列中元素的数量

具体代码如下:

import java.util.*;

public class GenericQueue<E> {
    private final LinkedList<E> list;

    public GenericQueue() {
        list = new LinkedList<>();
    }

    public void enqueue(E e) {
        list.add(e);
    }

    public E dequeue() {
        return list.removeFirst();
    }

    public int getSize() {
        return list.size();
    }

    @Override
    public String toString() {
        return "GenericQueue{" +
                "list=" + list +
                '}';
    }
}

优先队列

PriorityQueue 类实现了一个优先队列,默认情况下,优先队列使用 Comparable 以元素的自然顺序进行排序,拥有最小数值的元素被赋予最高优先级,因此最先从队列中删除。如果几个元素具有相同的最高优先级,则任意选择一个,也可以使用构造方法 PriorityQueue(initialCapacity, comparator) 中的 Comparator 来指定一个顺序

方法名描述
PriorityQueue()创建一个初始容量为 11 的默认优先队列
PriorityQueue(initialCapacity: int)创建一个初始容量为指定值的默认优先队列
PriorityQueue(c: Collection<? extends E>)创建一个具有指定合集的优先队列
PriorityQueue(initialCapacity: int, comparator: Comparator<? super E>)创建一个初始容量为指定值并且具有比较器的优先队列

运行实例:

import java.util.*;

public class PriorityQueueDemo {
    public static void main(String[] args) {
        PriorityQueue<String> q1 = new PriorityQueue<>();
        q1.offer("red");
        q1.offer("green");
        q1.offer("blue");
        q1.offer("cyan");
        System.out.println("Priority queue using Comparable:");
        while (q1.size() > 0) {
            System.out.print(q1.remove() + " ");
        }
        System.out.println();

        PriorityQueue<String> q2 = new PriorityQueue<>(4, Collections.reverseOrder());
        q2.offer("red");
        q2.offer("green");
        q2.offer("blue");
        q2.offer("cyan");
        System.out.println("Priority queue using Comparator:");
        while (q2.size() > 0) {
            System.out.print(q2.remove() + " ");
        }
        System.out.println();
    }
}

运行结果如下:

SAP自动化-ME51N批量创建采购申请 2、需要管理员授权RZ11脚本录制回放功能。1、仅限于正对SAP日常工作的批量处理。3、数据模板按实际需求更新。物料编码,工厂,数量。 阅读详情

相关推荐

从零到一:用Verilog和Quartus构建智能交通灯系统的实战指南

本文详细介绍了如何使用Verilog和Quartus Prime从零开始构建智能交通灯系统。通过分步指导,包括状态机设计、时序控制、数码管显示等核心模块实现,并结合ModelSim仿真验证,帮助FPGA初学者掌握数字电路设计的关键技术。文章还提供了实际部署到FPGA开发板的调试技巧和进阶优化方案。

weixin_29172201的博客 477

java集合(Set、List、Queue)

本文详细讲述了java集合的知识,包括Collection接口,Iterator接口,Set集合,List集合......

weixin_57341232的博客 1844

带你学习Android中的ContentObserver

通过使用,开发者可以有效地监听系统设置的变化,例如屏幕亮度等。这种机制使得应用能够动态响应系统设置的更改,提升用户体验。在实现需要与系统设置交互的应用时,合理使用是非常重要的。

执剑人 1311

Java集合List Map Set Queue

文章目录 一、Java集合介绍 1.1 什么是集合? 1.2 集合类的继承关系 1.3 集合和数组的区别 二、Collection接口和Iterator接口 2.1 Collection接口 2.1.1 Collection接口的常用方法 2.1.2 Collection常用方法操作集合举例 2.2 Iterator接口 2.2.1 Iterator接口作用? 2.2.2 Iterator接口的常用方法 2.2.3 Iterator常用方法举例 三、List集合 3.1 List接口 3.1.1 List接

qq_43581230的博客 428

电阻、电容、电感的实际等效模型

1、电阻的等效模型 2、电容的寄生参数 3、电容的等效参数 4、理想铝电解电容与实际铝电解电容的区别 5、电感的等效模型  

鸟宿江边树的博客 4万+

Ubuntu中 vsftpd 的安装与配置 (详细介绍)

简介 vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。 vsftpd是 UNIX 操作系统中的一个开源的、免费的 FTP 服务软件。具有以下特点: 安全性高 轻小易用 支持系统用户匿名用户和虚拟用户的权限验证和相关操作 安装步骤如下: 1.将此命令复制到终端 sudo apt-get install vsftpd 2.安装完成后启动VSFTP

qq_43299421的博客 1万+

将list集合进行切割 转换为队列进行处理

将一段list集合的数据进行切割,分段进行处理 public static void main(String[] args) { final LinkedBlockingQueue&amp;lt;Integer&amp;gt; testQueue = new LinkedBlockingQueue&amp;lt;Integer&amp;gt;( 100); Random random = new R...

u010256177的专栏 5557

FCTA/FCTB 前方交通穿行预警/制动系统技术规范

FCTA&amp;FCTB前方交叉路口预警制动系统是针对十字路口和停车场等&quot;鬼探头&quot;场景设计的驾驶辅助系统。系统在自车速度0-40km/h范围内工作,通过角雷达和摄像头检测侧向来车.

未知艺术家的博客 744

JAVA:用数组和链表实现队列

JAVA:用数组和链表实现队列

weixin_58879477的博客 689

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

MoCap 动作捕捉开源库教程

数据通过 tf2 和支持不同 QoS 设置的 /poses 主题直接发布。该软件包最初是为 Crazyswarm 开发的,用于跟踪多达 50 个飞行机器人。

机器人控制与仿真应用 1308

C++ 数据结构与算法(六)(栈与队列)

c++ 栈与队列 leetcode 代码随想录

chenyfan_blog 3932

麒麟操作系统提示“默认密钥环已上锁”的解决办法

麒麟操作系统提示“默认密钥环已上锁”的解决办法

太极淘的博客 1万+

第14章_数据结构与集合源码(一维数组,链表,栈,队列,树与二叉树,List接口分析,Map接口分析,Set接口分析,HashMap的相关问题)

第14章_数据结构与集合源码(一维数组,链表,栈,队列,树与二叉树,List接口分析,Map接口分析,Set接口分析,HashMap的相关问题)

小丁的博客 1140

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = &quot;R. B. Palm&quot;, title = &quot;Prediction as a candidate for learning deep hierarchical models of data&quot;, year = &quot;2012&quot;,}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er&lt;0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er &lt; 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free &quot;Bitdeli Badge&quot;)

List集合、数据结构(栈、队列、数组、链表)

数据结构是计算机科学中存储、组织数据的方式,以便可以高效地访问和修改数据。在Java中实现上述数据结构通常涉及到定义类和接口来封装数据结构的行为和属性。这些实现提供了基本的添加、删除和访问操作,你可以根据需要扩展它们以包含更多的功能。每种数据结构都有其特定的用途和优势,选择哪种数据结构通常取决于特定问题的需求和约束。包提供了更全面和优化的实现,包括。

Directionboy的博客 1386

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python - 深夜数据结构与算法之 Stack & Queue

Python Stack 栈与 Queue 队列简介与算法练习。

BITDDD小栈 1953

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【源码系列】Java中的数据结构——栈,队列,链表与LinkedList

自从上次字节面试凉了之后,我就一直有这个想法,想写个源码系列的博客。无奈最近事情太多,无法真正静下心来写。原本是想暑假来好好写这个系列,但因为下周要由我来负责协会授课,所以只能在这周写完。也好,毕竟只有ddl才有效率嘛(笑哭)。

风过孤屿,山海自成诗行。 2714

数据结构与算法之线性表(数组、链表、栈、队列)

一篇文章弄懂数据结构中的线性表,包含数组、链表、栈和队列。

weixin_45620557的博客 1316

【C++】STL:栈和队列模拟实现

C++中的stack(栈)和queue(队列)是两种常见的数据结构,用于存储和管理数据。栈是一种先进后出(LIFO)的数据结构,类似于我们平时堆叠的一摞书,只能在顶部进行操作。在C++中,可以使用std::stack模板类来创建栈。栈的主要操作包括压入(push)元素到栈顶、弹出(pop)栈顶元素以及获取栈顶元素等。队列是一种先进先出(FIFO)的数据结构,类似于排队等候的人群,新元素插入队尾,最早插入的元素在队头。在C++中,可以使用std::queue模板类来创建队列。

Renswc的博客 2753

数据结构与算法 :队列与栈的操作以及Java中的List和Queue

这样原来非空的就变成了空队列了。---每次操作无论push还是pop均有一个队列是空的。把上面我分析的思路翻译成代码就是这样的。

m0_48922996的博客 729

List、栈和队列

List 泛型的引入 问题:我们之前实现过的顺序表,只能保存int类型的元素,如果现在需要保存指向Person类型对象的引用的顺序表,请问应该如何解决?如果需要保存指向Book对象类型的引用呢? 答: 1、我们在学习多态的时候已经知道一个前提,基类的引用可以指向子类对象。 2、其次,我们也已知Object 是JAVA至所有类的祖先类。 要想解决上述问题,我们将顺序表的元素类型定义成Object类型...

weixin_44684011的博客 899

搞懂STL容器适配器:栈&队列&优先队列模拟实现

本文详细介绍了C++中四种重要数据结构的实现:栈(后进先出)、队列(先进先出)、双端队列(deque)和优先队列(priority_queue)。重点分析了它们的核心接口、底层实现原理及性能特点,包括基于数组/链表的实现方式,以及利用deque容器适配器的高效实现方案。特别深入讲解了优先队列的堆实现机制(向上/向下调整算法)和仿函数在STL中的应用,通过对比vector、list和deque的特性差异,为不同场景下的数据结构选择提供了指导建议。文中包含完整的C++模板实现代码和使用示例。

2501_94404690的博客 1498

python数据结构——栈&队列

栈 先进后出 class Stack(object): """栈""" def __init__(self): self.__list=[] def push(self,item): """添加一个新的元素item到栈顶""" self.__list.append(item) def pop(self): ...

weixin_44740082的博客 168

225. 用队列实现栈(栈与队列算法题)

摘要:文章介绍了如何使用队列实现栈的功能(LIFO)。核心思路是利用两个队列(q1主队列,q2辅助队列),在push操作时将新元素调整到q1队首:1)先将q1元素转移到q2;2)加入新元素到q1;3)将q2元素移回q1。这样pop()和top()只需操作q1队首即可。这种方法保证了最新元素始终位于队列前端,实现栈的后进先出特性,各操作时间复杂度为O(n)(push)和O(1)(pop/top/empty)。

m0_68880377的博客 496

秋招算法备战第10天 | 栈与队列理论基础、232.用栈实现队列、225. 用队列实现栈

两个栈可以实现队列,一个双端队列可以实现栈(from collections import deque)

weixin_40951932的博客 1319

算法初级教学第四步:栈与队列

栈是硬件特性:CPU 有专门的 SP 寄存器来追踪它。生长方向:在物理内存中,栈通常是从高地址向低地址“倒着长”的。函数调用即入栈:我们写的每一行函数调用,底层都是一次PUSH动作;函数返回,就是POP动作。现在,物理和硬件原理我们都懂了。但是,我们在写 Python 或 C++ 代码时,通常不会直接去操作 SP 寄存器。我们需要更高级的“抽象”。同时,我们还没详细讲队列。因为队列在 CPU 硬件层面上不如栈那么核心,它更多是在软件和算法层面发光发热。

AggressiveYu的博客 717
上一篇: 大厂Offer直通车,名企面试官精讲典型Java面试72道题
下一篇: OpenFeign集成Sentinel实现服务的熔断降级
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值