数组

多数元素

核能气质少年 提交于 2020-03-17 03:46:54
hashmap 一开始想用数组下标,思考不周,没想到数组内有负数, class Solution { public int majorityElement(int[] nums) { int n=nums.length; HashMap<Integer,Integer> aa=new HashMap<>(); for(int i=0;i<n;i++){ int count = aa.getOrDefault(nums[i], 0); aa.put(nums[i], count + 1);//hashmap的思想,更改value if(aa.get(nums[i])>n/2) return nums[i]; } return 0; } } en 排序 class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[(nums.length-1)/2]; } } 分治 思路 如果数 a 是数组 nums 的众数,如果我们将 nums 分成两部分,那么 a 必定是至少一部分的众数。 我们可以使用反证法来证明这个结论。假设 a 既不是左半部分的众数,也不是右半部分的众数,那么 a 出现的次数少于 l / 2 + r / 2 次,其中 l 和 r 分别是左半部分和右半部分的长度

leetcode编程题(5)

独自空忆成欢 提交于 2020-03-17 03:34:13
561. 数组拆分 I 原文链接: https://leetcode-cn.com/problems/array-partition-i/ 思路分析:进行升序排序后者写一对对的数是就现在的数组元素,每对最小数相加就是数组偶数位元素相加 代码: class Solution { public int arrayPairSum(int[] nums) { Arrays.sort(nums); int sum = 0; for(int i = 0;i<nums.length;i+=2) { sum = sum+nums[i]; } return sum; } } 977. 有序数组的平方 原文链接: https://leetcode-cn.com/problems/squares-of-a-sorted-array/ 思路分析:对数组每个元素计算平方值,后对数组进行排序。 代码: class Solution { public int[] sortedSquares(int[] A) { int[] sum = new int[A.length]; for (int i = 0; i < A.length; ++i){ sum[i] = A[i] * A[i]; } Arrays.sort(sum); return sum; } } 1051. 高度检查器 原文链接: https:/

JS数组方法----push()

那年仲夏 提交于 2020-03-17 03:32:44
JS数组方法----push() push()–可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。 var arr = [ 1 , 2 , 3 , 4 , 5 ] ; //新建数组,数组长度为5; ! function ( ) { console . log ( arr . push ( 6 ) ) ; //往数组末尾添加新项,返回length=6; console . log ( arr ) ; //添加后的数组的所有项; } ( ) ; 来源: CSDN 作者: 虫儿飞冷风吹 链接: https://blog.csdn.net/weixin_46198349/article/details/104892663

实现合并两个数组,合并之后仍然有序(C语言实现)

你。 提交于 2020-03-17 03:27:21
给出数组 算法思路 代码演示 给出数组 a[4] = {2,4,5,9}; b[4] = {1,6,7,8}; 算法思路 首先我们考虑一下,如果合并的话保存的时候我们肯定需要创建一个新的数组来保存,并且新数组的长度必须比两个合并的数组长度之和要大。才能把两个数组合并完之后的序列进行存储。那么我们创建一个数组c[8] = {0};来存储合并之后有序的数组。接下来图解进行说明。 图解: 代码演示 # include <stdio.h> void MergeArr ( int * a , int alen , int * b , int blen , int * c , int clen ) { int i = 0 ; int j = 0 ; int k = 0 ; while ( i != alen && j != blen ) { if ( a [ i ] < b [ j ] ) c [ k ++ ] = a [ i ++ ] ; else c [ k ++ ] = b [ j ++ ] ; } if ( i == alen ) { while ( j != blen ) c [ k ++ ] = b [ j ++ ] ; } else { while ( i != alen ) c [ k ++ ] = a [ i ++ ] ; } } int main ( ) { int a [

刷了力扣题之后,我也变的一发不可收拾了?

笑着哭i 提交于 2020-03-17 01:15:37
作为程序员界的一枚小菜鸟,可谓是,从大量的 CRUD 业务中,练就了一身复制粘贴即可用的本领。 因为大家不是都说:程序 = 复制 + 百度 吗,再高级一点的就是复制 + 谷歌喽。(我不禁想,难道科学^上网就高级了?) 反正都是拿来主义嘛,代码能跑起来就完事,实在不行,删库跑路也很轻松呀 ^_^。 但是呢,迫于网上不断流出的 “35岁程序员危机” 话题,我不得不开始认真思考,我这马上奔三的大龄青年,离 35 岁还差多远呢 。 再加上,身边大佬朋友都在说算法的重要性,看来,我真的需要重新考虑“程序”的定义了。看下边严肃版的官方定义。。。 程序 = 算法 + 数据结构 于是乎,我也开始重视算法和数据结构的重要性了。 那些躺在网盘里的收藏版,也是时候拿出来晒一晒了。 但是,只看理论,不做题,那不是耍流氓吗。好歹我也是一正经,正直的好青年,不能辜负力扣(LeetCode)对广大适龄程序员的好心啊。 万丈高楼平地起,我总得先去申请个账号吧(话说,貌似我之前好像申请过?但是都忘得一干二净了)。怎么个刷题法呢,又犯难了,好在我有百度啊,谷歌啊(咳咳,说好的不用搜索引擎呢)。 这时,查出来在某乎上看到一句特别有意思的话,说是有哥们从“两数之和”开始算法之路,从此变的一发不可收拾。当上总经理,出任CEO,迎娶富婆哦不白富美,走上人生巅峰。 我哩乖乖,有这么神奇么。我都不信了

线程安全的集合

五迷三道 提交于 2020-03-17 01:02:26
集合 #集合大概有4种类型:List Set Queue Map 其中Vector、HashTable、Properties是线程安全的。其中ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是线程不安全的。(线程不安全是指:当多个线程访问同一个集合或Map时,如果有超过一个线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。) Collections提供多个获取线程安全的集合 CopyOnWriteArraylist #写有锁 读无锁的集合 加强版的读写分离 ); 其实现的原理为 : 写操作原理 :将底层的数组做了一次复制,写的是新数组 完成了赋值之后再讲新数组替换旧数组 每调用一次写 底层数组都会扩容一次 , 读操作原理 :读的是写操作完成之前的旧数组 ,写完成之后才能读到新数组的赋值。 CopyOnWriteArraySet( #序 无下标 元素不允许重复 线程安全的Set集合底层使用CopyOnWriteArraylist实现,不同的是在使用addIfAbsent() 添加元素,会遍历数组 ,如果有存在的元素则不添加 。 其实现的原理为 : 表面上使用add方法,底层使用的是CopyOnWriteArraylist的addIfAbsent() 来判断要插入的新值是否存在

数组和链表区别

我是研究僧i 提交于 2020-03-17 01:01:41
总结: 1) 数组 便于 查询和修改 ( 顺序线性 ),但是不方便新增和删除 2) 链表 适合 新增和删除 ( 指针 ),但是不适合查询,根据业务情况使用合适的数据结构和算法是在大数据量和高并发时必须要考虑的问题 1.链表是什么 链表是一种上一个元素的引用指向下一个元素的存储结构,链表通过 指针来连接 元素与元素; 链表是 线性表 的一种,所谓的线性表包含顺序线性表和链表, 顺序线性表是用 数组 实现的 ,在内存中有顺序排列,通过改变数组大小实现。 而 链表 不是用顺序实现的,用指针实现, 在内存中不连续 。意思就是说,链表就是将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。 所以, 链表允许插入和删除表上任意位置上的节点 ,但是不允许随即存取。 链表有很多种不同的类型:单向链表、双向链表及循环链表。 2.单向链表 单向链表包含两个域,一个是 信息域 ,一个是 指针域 。也就是单向链表的节点被分成两部分,一部分是保存或显示关于节点的信息,第二部分存储下一个节点的地址,而最后一个节点则指向一个空值。 3.双向链表 从上图可以很清晰的看出,每个节点有2个链接,一个是指向前一个节点(当此链接为第一个链接时,指向的是空值或空列表),另一个则指向后一个节点(当此链接为最后一个链接时,指向的是空值或空列表)。 意思就是说 双向链表有2个指针

numpy 多维数组及数组操作

血红的双手。 提交于 2020-03-17 00:22:49
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库! 简单理解:   2维是EXCEL表格里面的多行多列   3维是EXCEL表格里面的多行多列+下面的sheet1、2、3   4维是包括了同一个文件夹下不同名称的EXCEL表格   5维是同一分区不同文件夹下不同名称的EXCEL表格   6维是不同分区不同文件夹下不同名称的EXCEL表格 多维数组非常像列表,但通常它的元素类型是相同的,且都是数字,下面是一个简单的例子。 声明数组: import numpy as np a = np.array([1, 2, 3, 4, 5, 6]) print(f'一维数组: {a}') 结果: a = np.array([[1, 2, 3], [4, 5, 6]]) print(f'二维数组: {a}') 结果: # 使用reshape方法反向生成多维数组 三维数组 nlist_3 = np.array(range(24)).reshape((3,2,4)) print(nlist_3) 结果: #反向声明一个size为20个元素的四维数组 nlist_4 = np.array(range(20)).reshape((1,2,5

Numpy入门 - 数组切片操作

纵然是瞬间 提交于 2020-03-17 00:22:17
本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作。 一、更改原数组的切片操作 import numpy as np arr = np.array([1, 2, 3, 4, 5, 6]) myarr = arr[1:3] myarr[:] = 0 print(arr) #这里并没有操作arr数组,但是数据却变了 [1 0 0 4 5 6] 二、不更改原数组的切片操作(使用copy方法) import numpy as np arr = np.array([1, 2, 3, 4, 5, 6]) myarr = arr[1:3].copy() #这里加上copy方法后,原数据不变 myarr[:] = 0 print(arr) [1 2 3 4 5 6] OK, 本讲到此结束,后续更多精彩内容,请持续关注我的博客。 来源: https://www.cnblogs.com/robin201711/p/7955661.html

React.js 小书 Lesson13 - 渲染列表数据

空扰寡人 提交于 2020-03-16 22:59:44
作者: 胡子大哈 原文链接: http://huziketang.com/books/react/lesson13 转载请注明出处,保留原文链接和作者信息。 列表数据在前端非常常见,我们经常要处理这种类型的数据,例如文章列表、评论列表、用户列表…一个前端工程师几乎每天都需要跟列表数据打交道。 React.js 当然也允许我们处理列表数据,但在使用 React.js 处理列表数据的时候,需要掌握一些规则。我们这一节会专门讨论这方面的知识。 渲染存放 JSX 元素的数组 假设现在我们有这么一个用户列表数据,存放在一个数组当中: const users = [ { username: 'Jerry', age: 21, gender: 'male' }, { username: 'Tomy', age: 22, gender: 'male' }, { username: 'Lily', age: 19, gender: 'female' }, { username: 'Lucy', age: 20, gender: 'female' } ] 如果现在要把这个数组里面的数据渲染页面上要怎么做?开始之前要补充一个知识。之前说过 JSX 的表达式插入 {} 里面可以放任何数据,如果我们往 {} 里面放一个存放 JSX 元素的数组会怎么样? ... class Index extends