-
数组中偶数java_使用递归选择数组的奇数/偶数元素
2021-02-28 08:59:56这听起来类似于我刚刚完成的作业,所以如果... 正如您已经说过的那样,您必须从现有的ArrayList中创建一个新的ArrayList . 您将从现有ArrayList中删除项目,存储偶数(或奇数)索引的整数,直到列表为空 .所以你的退出...这听起来类似于我刚刚完成的作业,所以如果它(并且你在我的 class !),我不会告诉你使用我们没有涉及的任何术语,因为我知道它可能是令人生畏的试图发现实用的新东西(超出我们的要求) .
首先,设置退出条件 . 正如您已经说过的那样,您必须从现有的ArrayList中创建一个新的ArrayList . 您将从现有ArrayList中删除项目,存储偶数(或奇数)索引的整数,直到列表为空 .
所以你的退出条件是:
if (evenList is Empty)
return evenList;
然后,按照自己的方式完成各个步骤 . 我建议确定你开始使用的数组是否有一个奇数步数,如下所示:
if (evenList has Even Elements)
int holderForIntsAtEvenElements = last evenList EVEN element
注意我们从最后一个元素开始,所以当你走出递归方法时,这将是添加到新ArrayList的最后一个,因此它将按数字顺序排列 . 您可能会发现这篇文章很有意思:What does this boolean return mean?
然后,我们想要从列表中删除最后一个元素,并再次递归调用该方法 .
最后,当我们达到退出条件并开始出现时,我们想要添加我们一直存储到它们的整数,例如:
evenList.add(holderForIntsAtEvenElements);
return evenList;
这并没有解决一个问题,如果列表没有偶数个元素,那么如何处理第一个元素 - 但是,我会让你试着解决它!这是代码和伪代码的良好组合,有望帮助您走上正确的轨道 .
-
算法题--找出数组中出现奇数次的元素
2012-09-05 11:05:53思路: 遍历数组,把数组中的元素保存到hashmap中, key是element的值,value是element出现的次数,保存之前check这个element是否存在,若存在,则将其删除,并不再保存,若不存在,则保存。这样遍历完一次之后,...如题, 快速找出数组中出现奇数次的元素。
思路: 遍历数组,把数组中的元素保存到hashmap中, key是element的值,value是element出现的次数,保存之前check这个element是否存在,若存在,则将其删除,并不再保存,若不存在,则保存。这样遍历完一次之后,hashmap中保存的都是出现奇数次的元素。
有时间再上代码。
-
如何正确删除list数组删除元素
2020-11-29 21:22:18并且创建一个方法,该方法用于对数组中的偶数元素进行删除,保留奇数元素。 代码如下(示例): import java.util.Collections; import java.util.Scanner; import java.util.ArrayList; public class Test1 { /**...记校招笔试大题
题目:创建一个ArrayList数组,数组元素大小范围[0,1024],数组长度在50万之内。并且创建一个方法,该方法用于对数组中的偶数元素进行删除,保留奇数元素。
代码如下(示例):
import java.util.Collections; import java.util.Scanner; import java.util.ArrayList; public class Test1 { /** * 方法TestArrayList是将传入的ArrayList数组的偶数元素进行删除,然后进行从大到小排序并输出。 * * @param a 数组参数 */ public void TestArrayList(ArrayList<Integer> a) { //删除数组中偶数的元素(此处有陷阱,进行remove()方法删除元素时,必须倒序删除数组元素) for(int i=0;i<a.size();i++){ if(a.get(i)%2==0) a.remove(i--); } //进行数组从大到小排序 a.sort(Collections.reverseOrder()); //降序 //a.sort(Comparator.naturalOrder()); //引用的是Comparator类,升序操作 System.out.println(a); } public static void main(String[] args) throws Exception { Test1 t1 = new Test1(); Scanner sa = new Scanner(System.in); ArrayList<Integer> arr = new ArrayList<Integer>(); System.out.println("请输入数字,数字间用逗号隔开!"); //输入提示 //1.获取用户输入的数字字符串 String numlist = sa.nextLine(); //2.将字符串通过分割字符串变成字符串数组 String[] slist = numlist.split(","); //3.将字符串数组的元素转换类型后插入arr数组 for (String a1 : slist) { int num2 = Integer.parseInt(a1); //判断数字大小,范围是[0,1024] if (num2 >= 0 && num2 <= 1024) { arr.add(num2); } } if (arr.size() > 500000) { System.out.println("很抱歉!该数组长度不能超过500000个!"); } else { //执行输出数组 t1.TestArrayList(arr); } } }
总结
这个博客没有啥技术含量,而且也不是最优化代码,如果有更好的代码请大佬们可以给我参考参考。
加油! -
算法题:给你一个整形数组,要求删除其中一个元素,使得剩余元素的乘积最大。如何找到这个待删除元素?
2019-10-29 22:49:17算法题:给你一个整形数组,要求删除其中一个元素,使得剩余元素的乘积最大。如何找到这个待删除元素? 分析情况:当数组中有负数的情况 和 没有负数的情况 当数组中全是正整型的值 ,就取其中最小的值 当...算法题:给你一个整形数组,要求删除其中一个元素,使得剩余元素的乘积最大。如何找到这个待删除元素?
分析情况:当数组中有负数的情况 和 没有负数的情况
-
当数组中全是正整型的值 ,就取其中最小的值
-
当数组中有负数的情况时候
- 奇数个数的负数
- 个数为负数,取最小的负数
- 偶数个数的负数
- 取正整数最小的值
- 奇数个数的负数
-
代码实现
思路: 判断数组中负数的个数
1.如果数组中负数的个数是奇数,那么就移除,最大的负数
2.如果数组中的负数的个数是全是偶数,那么就移除 最小的负数
2-1. 部分是偶数 + 0 也 是 偶数,所以,即还是移除最小的正整数
/** * 返回要删除的元素的下标 * * @param nums * @return */ public static int findRemoveIndex(int[] nums) { // 统计负数的个数 int negativeCount = 0; for (int i = 0; i < nums.length; i++) { // 有负数就+1 if (nums[i] < 0) { negativeCount++; } } //根据不同的情况,选择要删除的元素 int tempIndex = 0; if ((negativeCount & 1) == 1) { //情况1: 负数个数是奇数,就移除最大的负数 for (int i = 0; i < nums.length; i++) { if (nums[i] < 0) { //解释: 因为是奇数个所以直接取值为负数的 num[i],减少判断 // 如果 tempIndex 即第一个值是整数,那么毫无疑问,就将当前的index,赋给temIndex // nums[i]当前的负数 与 temPindex的负数比较 最大的负数,就重新复制给tempIndex if (nums[tempIndex] >= 0 || nums[i] > nums[tempIndex]) { tempIndex = i; } } } return tempIndex; } else { //情况2: 负数个数是偶数 if (nums.length == negativeCount) { // 子情况,所以的元素都是负数 // 因为是偶数,所以,只需要找出 最小的值, for (int i = 0; i < nums.length; i++) { if (nums[i] < nums[tempIndex]) { tempIndex = i; } } return tempIndex; }; // 部分是偶数是负数 或者 没有负数的情况 for (int i = 0; i < nums.length; i++) { if (nums[i] >= 0) { if (nums[tempIndex] < 0 || nums[i] < nums[tempIndex]) { tempIndex = i; } } } return tempIndex; } }
3.1 测试方法
/** * 测试下标的值 */ @Test public void testRemoveIndex(){ int[] arrays1 = {12,-3,5,-6,7,8,-9,7}; // 应该移除 -3 int index = findRemoveIndex(arrays1); System.out.println("删除元素的下标:" + arrays1[index]); int[] arrays2 = {-12,-3,-5,-6,-7,-8,-9,8}; // 应该移除 -3 index = findRemoveIndex(arrays2); System.out.println("删除元素的下标:" + arrays2[index]); int[] arrays3 = {-12,-3,-5,-6,7,8,9,3}; // 应该移除 3 index = findRemoveIndex(arrays3); System.out.println("删除元素的下标:" + arrays3[index]); }
3.2 运行结果
-
-
调整数组顺序使奇数位于偶数前面
2020-06-29 17:29:57我们定义一个新的数组,存储旧数组中的偶数,同时删除旧数组中的偶数,当遍历完成旧数组时,所有的偶数都存储进新数组中,将新数组中的元素都拼接再旧数组的末尾。 代码: public class Solution { public void ... -
调整数组顺序使奇数在偶数前面
2018-11-24 20:32:53思路:第一种方法:首先对数组进行遍历,先找出偶数元素,存储到另一个数组中,并把这个元素从原数组删除,当遍历完整个数组后,再把偶数的数组的每一个元素push_back到原来的数组中。 第二种方法:直接对数组中的... -
一个数组实现两个栈
2016-04-11 21:19:39利用一个数组实现两个栈是数据结构中的一道经典面试题,那么如何来求解呢?大多数人为了方便都采取了静态实现方式,但是这种方式不能进行扩容,不够完美。博主利用C++尝试了一下动态实现。首先,通过了解栈的特点... -
盛最多水的容器、删除排序数组中的重复项I、II、替换空格、合并区间、移动零、二维数组中的查找、和为s的两...
2020-10-28 19:31:19给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 class ... -
按奇偶排序数组 和 删除排序数组中的重复项
2019-01-24 00:37:39给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 你可以返回满足此条件的任何数组作为答案。 示例: 输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1... -
32.请编写函数fun,其功能是:将s所指字符串中除了下标...串中剩余字符所形成的一个新串放在t所指的数组中。
2020-05-13 17:00:1432.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl... -
C语言编程>第十二周 ② 请编写...其余的所有字符都删除,串中剩余字符所形成的一个新串放在s所指的数组中。
2021-01-03 12:50:03而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他以此类推。最后s所指的数组中的内容应是135。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 -
数组中只出现一次的数字
2020-06-29 17:38:07因为数字只存在一次或者两次,所以可以定义一个ArrayList用于添加数组中的元素,若元素已经在ArrayList存在,则在ArrayList删除该元素,表示这个元素是出现两次的元素,遍历完成数组,最后在ArrayList中剩下的元素则... -
【剑指Offer】调整数组中顺序使奇数位于偶数前(push_back内存访问越界)
2019-03-26 20:13:30输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解法1: 整体思路就是每找到一个... -
【JAVA 第五章 】课后习题 删除奇数元素下标 然后再删除值为奇数的下标
2019-06-18 15:03:19假设 n 为奇数,删除该下标元素后,根据元素下标删除后会自动回落的特型,下一个奇数既是n+1; 总感觉有点不对劲,有bug 的话麻烦大神指点一二 public class Test { //编写方法... 该方法仅保留数组a 中下标为偶数 ... -
一篇文章教你数组在算法中的基本使用
2021-01-15 14:31:21但是元素可以随机存取,因为数组中的每个元素都可以通过数组索引来识别。插入和删除时要移动后续元素,还要考虑扩容问题,插入慢。 数组与日常的业务开发联系非常紧密,如何巧妙的用好数组是我们能否开发出高质量... -
【算法练习】leetcode每日一题/动态规划 978. 最长湍流子数组+1186. 删除一次得到子数组最大和
2021-02-08 15:26:14978. 最长湍流子数组 难度中等108 当A的子数组A[i], A[i+1], ..., A[j]满足下列条件时,我们称其为湍流子数组: 若i <= k <...也就是说,如果比较符号在子数组中的每个相邻元素对之间翻... -
《Matlab编程 - 第一章 Matlab中的数组操作》.ppt
2020-10-20 15:49:17* 练习题 输入一个矩阵A提取A的第2行第1列的元素提取A的第1,3,4列所有元素让A的第1列和第3列互换删除A的第1列 将矩阵A的第2行元素扩大2倍再增加3后作为A的第3行 求出数组x中所有奇数的和与所有的偶数和 x=[8,3,5,-1,... -
c++删除容器中的奇数
2017-11-09 15:53:00出自 c++ primer(4th)282页,26题 题意 数组ia[]={0,1,1,2,3,5,8,13,21,55...使用单个迭代器参数版本的erase()函数将list容器中的奇数元素值删掉。 代码 #include <iostream> #include <list> using... -
初学者的shell数组
2020-07-31 16:26:09(4)举例说明(快速创建数组、奇数数组)【3】shell数组的长度(1)数组元素、下标、长度之间的关系(2)数组长度的应用求出一个数组中的最大值【4】冒泡排序法(1)示意图解(2)举例说明(升序排列)【5】数组的... -
shell脚本学习之基础篇六:数组
2020-07-25 23:41:39shell脚本的数组一、数组的含义二、数组的分类三、数组的格式1、格式解读2、定义一个数组四、数组的操作1、读取数组和元素2、查看当前所有数组3、查看数组索引4、查看数组元素个数5、替换数组元素6、删除数组(1)... -
shell脚本快速入门之-----数组
2020-07-26 18:24:34文章目录一、数组的含义二、数组的分类三、数组的格式1、格式解读2、定义一个数组四、数组的操作1、读取数组和元素2、查看当前所有数组3、查看数组索引4、查看数组元素个数5、替换数组元素6、删除数组五、数组脚本... -
LeetCode笔记--数组(6)
2018-09-23 18:51:38遍历结束后数组 B中只存放偶数元素,数组A中只存放奇数元素,将两个数组拼接起来,得到结果。 (与之前遇到一题相似, 由于数组长度在遍历过程中会发生改变,因此用的是while循环而不是for循... -
PAT甲级真题1057 栈(树状数组)
2021-01-03 23:06:56现在,你需要实现一个栈,该栈要具有一个额外的操作:PeekMedian-返回栈中所有元素的中值。 对于 N 个元素,如果 N 为偶数,则中值定义从小到大第 N/2 个元素;如果 N 为奇数,则中值定义为从小到大第 N+1/2个元素。... -
天梯赛-L3-002(树状数组)
2020-10-26 21:57:06堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的... -
腾讯笔试3:偶数个数字里面删掉一个数之后的中位数是什么
2020-09-07 09:56:21思路:首先排序,但是不能在原数组上面排序,需要复制一个数组进行排序,排完序之后,比如上面就是: 1 2 3 4 5 6 然后我们找到靠近中间的两个数:3(叫做min)和4(叫做max),然后,假如需要删除 1或者2,剩下的... -
L3-002 特殊堆栈 (树状数组+二分)
2019-02-27 21:18:19堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的...