刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 2023/6/4

news/2025/1/12 0:50:29/

2465. 不同的平均值数目

这道题挺容易的。主要是排序+哈希。题目里有明显的去重的意思,所以哈希set是肯定有的。找最大最小,最方便的就是排序。这里我为了操作方便,把数组nums拷贝到了集合list里面。排一次序,之后取最大值最小值都很方便。

Collections.sort()方法,可以给Collection集合排序。

我的答案是这样:

class Solution {Set<Double> set = new HashSet<Double>();public int distinctAverages(int[] nums) {int nlen = nums.length;List<Integer> list = new LinkedList<>();for (int i = 0; i < nlen; i++) {list.add(nums[i]);}int max;int min;double avg;Collections.sort(list);while(list.size() > 0) {max = list.get(list.size() - 1);min = list.get(0);list.remove(list.size()-1);list.remove(0);avg = (max+min)*1.0/2;set.add(avg);}return set.size();}
}

看了题解,发现自己的思路还有很大的优化空间。题解结合了双指针,以及所谓的删除也没必要真的删去,用双指针维护一段有效区间即可。avg也没必要切切实实求出来,因为题干要求的是求不同平均值的数目,数目从set的长度就可以体现。因此,如果两数的和相同平均值就会相同,没必要把平均值的具体答案求出。

这样算法的效率大大提升。

class Solution {public int distinctAverages(int[] nums) {Arrays.sort(nums);Set<Integer> seen = new HashSet<Integer>();for (int i = 0, j = nums.length - 1; i < j; ++i, --j) {seen.add(nums[i] + nums[j]);}return seen.size();}
}


http://www.ppmy.cn/news/204549.html

相关文章

硬盘序列号、设备序列等查询

1.硬盘序列号查询。 1&#xff09;Windowsr,输入cmd 回车 2&#xff09;输入diskpart&#xff0c;回车 3&#xff09;输入list disk&#xff0c;回车 4&#xff09;输入select disk *(可选)&#xff0c;回车 5&#xff09;输入detail disk&#xff0c;回车结束。 2.ip(mac)地…

计算机硬盘型号怎么看,硬盘编号怎么看

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 查看硬盘编号即查看磁盘ID&#xff0c;操作方法如下&#xff1a; 1、点击开始&#xff0c;在搜索一栏中输入cmd&#xff0c;点击回车键&#xff0c;就可以打开命令窗口&#xff1b;…

手动查询硬盘序列号

win7旗舰版1. 开始-运行-输入&#xff1a;wbemtest 回车 2. 单击"连接", 输入&#xff1a;root\cimv2 回车; 或者ROOT\SecurityCenter 3. 单击"查询", 输入&#xff1a;select * from Win32_PhysicalMedia 应用&#xff0c;出来三个&#xff0c;我这第一…

如何查看计算机的硬盘序列号,电脑硬盘序列号怎么查?一招查看硬盘序列号的简单方法...

好多网友想知道自己电脑硬盘序列号是多少&#xff1f;这该怎么查看&#xff1f;硬盘的序列号是一个唯一的识别号,我们安装一些大型的开发软件时都会用到。其实查看硬盘序列号的方法很简单&#xff0c;今天小编教大家一招查看电脑硬盘序列号的简单方法。 具体方法如下&#xff1…

怎么查看计算机硬盘sn,硬盘序列号,教您怎么查看硬盘序列号

很多朋友不知道我们电脑上使用的硬盘是有序列号的&#xff0c;通过序列号我们可以查硬盘的真伪&#xff0c;那么怎么查看硬盘序列号呢&#xff1f;下面小编就来教您怎么查看硬盘序列号。 下面是查看硬盘序列号的步骤&#xff1a; 1.首先敲击键盘的“WINR”键&#xff0c;然后在…

查询硬盘序列号

1.首先&#xff0c;敲击键盘“WINR”&#xff0c;然后在打开的运行窗口里输入cmd&#xff0c;再点确定。 2.接着在打开的命令窗口中&#xff0c;输入diskpart&#xff0c;再敲下回车键。 3.下一步&#xff0c;输入list disk&#xff0c;再敲击回车键&#xff0c;就可以看到电脑…

怎么查看电脑硬盘序列号

1、打开cmd 2、启动diskpart程序 C:\WINDOWS\system32> diskpart3、查看电脑所有的磁盘信息 DISKPART> list disk4、选中磁盘0 DISKPART> select disk 05、显示硬盘所有的信息 DISKPART> detail disk6、退出diskpart程序 DISKPART> exit

win7电脑设备序列号怎么查_win7硬盘序列号怎么看|win7查看硬盘序列号的方法

最近一些用户询问说win7硬盘序列号怎么看&#xff1f;一般硬盘序列号很多电脑爱好者都不会看&#xff0c;有时候公司或者实验室需要登记每个人电脑的硬盘序列号(也就是硬盘ID)&#xff0c;就需要查看硬盘序列号了。可以借助第三方软件进行查看&#xff0c;如果要登记电脑太多&a…