第一题

题目描述

2194. Excel 表中某个范围内的单元格

解题思路

简单题目,两次循环即可。唯一需要注意的,遍历时候以字符遍历。

解题代码

class Solution {public List<String> cellsInRange(String s) {String s1 = s.split(":")[0];String s2 = s.split(":")[1];char xs = s1.charAt(0);int ys = s1.charAt(1) - 48;char xe = s2.charAt(0);int ye = s2.charAt(1) - 48;List<String> res = new ArrayList<>();for (char i = xs; i <= xe; i++) {for (int j = ys; j <= ye; j++) {res.add(String.valueOf(i) + j);}}return res;}
}

第二题

题目描述

2195. 向数组中追加 K 个整数

解题思路

被这道题坑了,开始的思路就是想的一个数一个数的去搞,非常遗憾,超时了。

class Solution {public long minimalKSum(int[] nums, int k) {Arrays.sort(nums);long res = 0;int index = 0;int curMin = 1;int count =0;while (index<nums.length && count<k) {if (curMin < nums[index]) {res += curMin;curMin++;count++;} else if (curMin==nums[index]) {index++;curMin++;}else {index++;}}while (count<k){res += curMin;curMin++;count++;}return res;}
}

接下来还礼一种思路,先把数字加到set中,然后从1开始,假如出现在set里面,就不加到总和,否则加入总和。

class Solution {public long minimalKSum(int[] nums, int k) {HashSet<Integer> set = new HashSet<>(100000);for (int i : nums) {set.add(i);}long res = 0;int curMin = 1;int count = 0;while (count < k) {if (!set.contains(curMin)) {res += curMin;count++;} curMin++;}return res;}}

遗憾的是,这个方法也不行。

最后想到了要一段一段的算,从nums的数组两个数字之间开始算,加入最后一段超出了总数,那就最后一段以总数为准。

解题代码

class Solution {public long minimalKSum(int[] nums, int k) {Arrays.sort(nums);long res = 0;int index = 0;int count = 0;int pre = 0;while (index < nums.length) {int cur = nums[index];int n = cur - pre - 1;if (n > 0) {// 两个数之间有数if (k - count > n) {count += n;res += (long) (pre + cur) * n / 2;} else {res += (long) (pre + pre + 1 + k - count) * (k - count) / 2;return res;}}pre = cur;index++;}if (count < k) {// 假如数组中间已经没有可以插入的数字了,将剩余的加上pre = nums[nums.length - 1];res += (long) (pre + pre + 1 + k - count) * (k - count) / 2;}return res;}}

第三题

2196. 根据描述创建二叉树

解题思路

依照父节点和子节点关系,直接去建立树即可,用两个map来存储节点,以此来找到最终的根节点。

PS:题目不讲理,说好的 节点数字小于等于10000,但其实要比10000大一些.很生气。

解题代码

class Solution {public TreeNode createBinaryTree(int[][] descriptions) {TreeNode[] treeNodes = new TreeNode[1000000];HashSet<Integer> setF = new HashSet<>();HashSet<Integer> setS = new HashSet<>();for (int[] d : descriptions) {int father = d[0];int son = d[1];setF.add(father);setS.add(son);if (treeNodes[son] == null) {treeNodes[son] = new TreeNode(son);}if (treeNodes[father] == null) {treeNodes[father] = new TreeNode(father);}// 都不为空if (d[2] == 0) {treeNodes[father].right = treeNodes[son];} else {treeNodes[father].left = treeNodes[son];}}for (int fa : setF) {if (!setS.contains(fa)) {return treeNodes[fa];}}return null;}
}

第四题

题目描述

2197. 替换数组中的非互质数

解题思路

拿到题目,就觉得这个要频繁用到删除操作,假如在数组上操作,心想必然超时。于是改为自定义双向链表。给双向链表一个自己的头,用于最后返回,每三个数做一个判断,前两个先判断,后两个后判断。后两个判断完成之后,还有把指针再往前指一下。因为很有可能这两个又可以合并。

解题代码

class Solution {public List<Integer> replaceNonCoprimes(int[] nums) {Node head = new Node(0);Node p = head;for (int i : nums) {Node n = new Node(i);p.setNext(n);n.setPre(p);p = n;}p = head.next;while (p.next != null) {int v1 = p.pre.val;int v2 = p.val;int v3 = p.next.val;if (v1 != 0 && gcd(v1, v2) > 1) {p.pre.next = p.next;p.next.pre = p.pre;p = p.pre;p.val = lcm(v1, v2);} else if (gcd(v2, v3) > 1) {p.val = lcm(v2, v3);if (p.next.next != null) {p.next.next.pre = p;}p.next = p.next.next;} else {p = p.next;}}p = head.next;List<Integer> list = new ArrayList<>();while (p != null) {// System.out.println(p.val);list.add(p.val);p = p.next;}return list;}public int gcd(int a, int b) {if (b == 0) return a;return gcd(b, a % b);}public int lcm(int a, int b) {return a / gcd(a, b) * b;}
}class Node {Node pre;Node next;int val;public Node(int val) {this.val = val;}public Node getPre() {return pre;}public void setPre(Node pre) {this.pre = pre;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}public int getVal() {return val;}public void setVal(int val) {this.val = val;}
}

Leetcode-第 283 场周赛相关推荐

  1. LeetCode第 227 场周赛题解

    LeetCode第 227 场周赛题解 检查数组是否经排序和轮转得到 原题链接 https://leetcode-cn.com/problems/check-if-array-is-sorted-an ...

  2. 20220307:力扣第283场周赛(上)

    力扣第283场周赛(上) 题目 思路与算法 代码实现 写在最后 题目 Excel 表中某个范围内的单元格 向数组中追加 K 个整数 思路与算法 第一题直接模拟即可,注意作为char的数字也是可以直接自 ...

  3. LeetCode 第 194 场周赛

    LeetCode 第 194 场周赛 数组异或操作 思路和代码 保证文件名唯一 思路及代码 避免洪水泛滥 思路及代码 找到最小生成树里的关键边和伪关键边 思路及代码 这次周赛比以往难很多. 数组异或操 ...

  4. LeetCode第187场周赛(Weekly Contest 187)解题报告

    差点又要掉分了,还好最后几分钟的时候,绝杀 AK.干巴爹!!! 第一题:思路 + 模拟暴力. 第二题:线性扫描. 第三题:双指针(滑动窗口) + 优先队列. 第四题:暴力每一行最小 k 个 + 优先队 ...

  5. Acwing第72场周赛+Leetcode第314场周赛

    Acwing第72场周赛 第一题:AcWing 4624. 最小值 分析:向下取整可以用到math.h头文件中的floor()函数,最后输出时套用两个min()函数求三个数的最小值即可. 代码: #i ...

  6. Leetcode第 310 场周赛 补打

    Leetcode 第310场周赛 自己赛后打了一下,记录了一下时间,大概15min A 3题,第四题是写不出来,然后学习了一天线段树(真的强). 思路: 1.排序后统计偶数的数目 2.遍历扫一遍,用直 ...

  7. LeetCode第176场周赛(Weekly Contest 176)解题报告

    又是一周掉分之旅,我发现,LeetCode周赛的数据好水,所以有的时候,实在没思路,先暴力解决试试(即使分析出时间复杂度会超时),比如第二题和第三题都可以暴力通过,GG思密达. 这周主要使用了数据结构 ...

  8. Leetcode第321场周赛补题

    Leetcode第321场周赛补题 第一题:6245. 找出中枢整数 - 力扣(LeetCode) 分析:由于数组中是差值为1的等差数列,所以可以直接用等差数列求和公式的朴素法更加简便的解决这题,,其 ...

  9. [算法]LeetCode第194场周赛202006021

    第194场周赛 20200621 1486. 数组异或操作 题目描述1 给你两个整数,n 和 start . 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 ...

  10. LeetCode第 310 场周赛

    文章目录 前言 第86场双周赛情况 题目复盘+题解 题1:6176. 出现最频繁的偶数元素[easy] 题2:6176. 出现最频繁的偶数元素[medium] 题3:6178. 将区间分为最少组数[m ...

最新文章

  1. 一文轻松了解Graph Neural Networks
  2. 温度传感器有源电子标签设计浅析
  3. Django Rest Framework
  4. 服务端高并发分布式架构演进之路【转】
  5. python代码模块与模块之间空1行_Day006|Python语法基础
  6. python开发_xml.etree.ElementTree_XML文件操作
  7. 如何知道对象在Python中是否具有属性
  8. poj-1190 生日蛋糕 **
  9. 理解Java虚拟机体系结构
  10. 贝莱德集团CEO劳伦斯·芬克: 伟大的公司,都有一个长期战略
  11. 计算机组成原理汉字编码与校验设计实验报告(汉字国标码转区位码实验、汉字机内码获取实验、海明编码电路设计与海明解码)
  12. win7电脑开启屏幕旋转功能吗 Win7系统屏幕的旋转功能如何使用
  13. Micropython教程之TPYBoard DIY电子时钟(萝卜学科编程教育)
  14. 片片青艾草,悠悠赤子心
  15. <dl>、<dt>、<dd> 的使用
  16. 机器人学习笔记——机器人概述
  17. Kuhn-Munkres(KM算法)简单笔记
  18. SQL查询选修了全部课程的学生姓名
  19. jar包 加密 ----xjar (亲测可用)
  20. rdkitpython | 挑选多个互变异构体的主要构象

热门文章

  1. python PyQt5 slot插槽(pyqtSignal、pyqtSlot)
  2. python如何处理异常,让程序不结束继续运行?
  3. mxd 对象继承法则
  4. mysql 主从复制优化、并行复制
  5. 【SSM】Kisso实用教程之验证码简单使用(一)
  6. vue教程2:vue基础
  7. python完全背包最优_python 完全背包问题_遗传算法Python实战 009.背包问题
  8. brew 安装mysql5.6_mac使用brew安装mysql的坑
  9. Java 11都有哪些新特性?
  10. windows操作系统中配置java环境