已解决
LeetCode-2103. 环和杆-哈希表(朴素)+位运算
来自网友在路上 190890提问 提问时间:2023-11-07 13:55:04阅读次数: 90
最佳答案 问答题库908位专家为你答疑解惑
Problem: 2103. 环和杆
每日一题
文章目录
- 思路
- 哈希表
- 位运算
- Code
- 哈希表
- 位运算
思路
哈希表
- 取杆记录环上的颜色。
- 由于杆上可能有多条环,导致颜色重复记录,而我们只需要记录杆上颜色种类,设置hashset(唯一颜色)来完成。
位运算
思路来源:ylb
- 将环颜色对应位值(如果三种颜色都有(1110)(二进制)==(7)(十进制))
- 遍历字符串,位运算
- 数组模拟杆编号并记录颜色种类
Code
哈希表
class Solution {
public int countPoints(String rings) {int len = rings.length();int res = 0;Map<Integer, Set<String>> map = new HashMap<>();// 存第i个编号有?种颜色for (int i = 0; i < len - 1; i += 2) {// 取字符串-颜色对String sub = new String(rings.substring(i, i + 2));int num = sub.charAt(1);String color = String.valueOf(sub.charAt(0));if (!map.containsKey(num)) {// 没有该键值对map.put(num, new HashSet<>());}map.get(num).add(color);// 有-存颜色}for (Integer i : map.keySet()) {if (map.get(i).size() == 3) {res++;}}return res;}
}
位运算
class Solution {public int countPoints(String rings) {int[] d = new int['Z'];d['R'] = 1; // 'R' 对应的位值为 1d['G'] = 2; // 'G' 对应的位值为 2d['B'] = 4; // 'B' 对应的位值为 4int[] mask = new int[10]; // 用于存储杆上的颜色种类for (int i = 0, n = rings.length(); i < n; i += 2) {int c = rings.charAt(i);int j = rings.charAt(i + 1) - '0';mask[j] |= d[c]; // 关键!!!位运算}int ans = 0; // 遍历算结果for (int x : mask) {if (x == 7) {++ans; // 如果位标记为 7,表示三种颜色的环都有。}}return ans; }
}
查看全文
99%的人还看了
相似问题
- QT中样式表常见属性与颜色的设置与应用
- OpenLayers实战,WebGL图层根据Feature要素的变量动态渲染多种颜色的三角形,适用于大量三角形渲染不同颜色
- Threejs_08 纹理颜色的调整(颜色空间的设置)
- 数据处理生产环境_利用MurmurHash3算法在Spark和Scala中生成随机颜色
- vue中使用echarts实现省市地图绘制,根据数据显示不同区域颜色,点击省市切换,根据经纬度打点
- 【CSS】各百分比透明度 opacity 对应的 16 进制颜色值(例如:#FFFFFF80)
- BetterDisplay Pro v2.0.11(显示器颜色校准软件)
- Kotlin语言实现单击任意TextVIew切换一个新页面,并且实现颜色变换
- vColorPicker与vue3-colorPicker——基于 Vue 的颜色选择器插件
- PySide/PYQT如何用Qt Designer和代码来设置文字属性,如何设置文字颜色?
猜你感兴趣
版权申明
本文"LeetCode-2103. 环和杆-哈希表(朴素)+位运算":http://eshow365.cn/6-34524-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!