当前位置: 首页 > news >正文

力扣刷题(复习版)

文章目录

    • 题目:最大重复子字符串
      • 题解
    • 题目: 面试题 16.07. 最大数值
      • 题解
    • 题目: 最大字符串配对数目
      • 题解
    • 题目: 字符串中第二大的数字
      • 题解
    • 题目: 统计最大组的数目
      • 题解
    • 题目: 删除每行中的最大值
      • 题解
    • 总结

题目:最大重复子字符串

原题链接:最大重复子字符串
在这里插入图片描述

题解

方法:暴力延长word的重复次数并比较,用contains()函数

 public static int maxRepeating(String sequence, String word) {int maxRepeat = 0;StringBuilder repeatedWord = new StringBuilder(word);// 循环尝试增加word的重复次数,直到不再是子字符串while (sequence.contains(repeatedWord)) {maxRepeat++;repeatedWord.append(word);}return maxRepeat;}

题目: 面试题 16.07. 最大数值

原题链接: 面试题 16.07. 最大数值

题解

方法:通过计算两个整数差值的符号位

表达式 a * (1 - sign) + b * sign 能够实现两个值的二选一效果

 public int maximum(int a, int b) {long diff = (long)a - (long)b;long sign = (diff >>> 63) & 1;return (int)(a * (1 - sign) + b * sign);}

题目: 最大字符串配对数目

原题链接: 最大字符串配对数目
在这里插入图片描述

在这里插入图片描述

题解

public static int maximumNumberOfStringPairs(String[] words) {HashSet<String> set = new HashSet<>();int count = 0;for (String word : words) {String reversed = "" + word.charAt(1) + word.charAt(0);// 检查反转字符串是否已经存在于 set 中if (set.contains(reversed)) {count++;}set.add(word);}return count;}

题目: 字符串中第二大的数字

原题链接: 字符串中第二大的数字
在这里插入图片描述

题解

方法1:

 public static int secondHighest(String s) {Set<Integer> set = new HashSet<>();for (char c : s.toCharArray()) {if (Character.isDigit(c)) {set.add(c - '0');}}int firstMax = -1;int secondMax = -1;for (Integer i : set) {if (i > firstMax) {secondMax = firstMax;firstMax = i;} else if (i > secondMax && i < firstMax) {secondMax = i;}}return secondMax;}

方法2:
先找到最大值删除,如果set不为空,继续寻找最大值(答案)

 public static int secondHighest11(String s) {Set<Integer> set = new HashSet<>();for (char c : s.toCharArray()) {if (Character.isDigit(c)) {set.add(c - '0');}}int maxValue = -1;for (Integer i : set) {if (i > maxValue) {maxValue = i;}}set.remove(maxValue);if (set.size() == 0) return -1;maxValue = -1;for (Integer i : set) {if (i > maxValue) {maxValue = i;}}return maxValue;}

题目: 统计最大组的数目

原题链接: 统计最大组的数目
在这里插入图片描述

题解

方法:利用 map 将相同的数位和作为键(哈希表)

public static int sumDigit(int i) {int res = 0;while (i > 0) {res += i % 10;i /= 10;}return res;
}public static int countLargestGroup(int n) {int maxCnt = 0;HashMap<Integer, Integer> map = new HashMap<>();for (int i = 1; i <= n; i++) {int sum = sumDigit(i);int count = map.getOrDefault(sum, 0) + 1;map.put(sum, count);maxCnt = Math.max(maxCnt, count);}int res = 0;for (Integer value : map.values()) {if (value == maxCnt) {res++;}}return res;
}

题目: 删除每行中的最大值

原题链接: 删除每行中的最大值
在这里插入图片描述

题解

方法:通过逐列查找每一行未使用的最大值,并将其标记为已使用,然后将每列的最大值累加得到最终结果。主要利用 used 数组来跟踪已经处理过的元素

public boolean[][] used = new boolean[51][51];// 找到一行中最最大的元素  并标记已处理public int findMaxByRow(int[][] grid, int row) {int maxValue = -1;int maxIndex = -1;for (int i = 0; i < grid[0].length; i++) {if (!used[row][i] && grid[row][i] > maxValue) {maxValue = grid[row][i];maxIndex = i;}}if (maxIndex != -1) {used[row][maxIndex] = true;}return maxValue;}public int deleteGreatestValue(int[][] grid) {int res = 0;for (int j = 0; j < grid[0].length; j++) { int maxValue = -1;for (int i = 0; i < grid.length; i++) { int maxByRow = findMaxByRow(grid, i);if (maxValue < maxByRow)maxValue = maxByRow;}res += maxValue;}return res;}

总结

  1. 拿到一个题目要认真读题(建议读2遍),没思路可以看一下提示,有时候提示会给你一些解题思路的
  2. 不要被给的输入输出示例迷惑了,有时候会干扰你解题的

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 7-2 求矩阵的最大值(设惟一)
  • Java底层堆内存、GC等知识点阐述
  • 8、引用
  • 【机器学习】CNN在计算机视觉中的应用
  • PowerShell脚本编写:自动化Windows开发工作流程
  • Python(PyTorch)物理变化可微分神经算法
  • 北京博科测试
  • Java并发编程12
  • es 7.17.23安装ik插件启动失败,access denied,Permission
  • uniapp开发微信小程序调用微信支付
  • 宠物空气净化器吸猫毛有用吗?希喂、美的、霍尼韦尔三款亲测分享
  • C++类和对象(3)——this指针
  • Redis中的缓存穿透、缓存击穿、缓存雪崩(面试版)
  • matlab 创建复数数组
  • SQL典型练习题
  • 【css3】浏览器内核及其兼容性
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • ES6核心特性
  • javascript 哈希表
  • js作用域和this的理解
  • PHP的类修饰符与访问修饰符
  • Promise面试题,控制异步流程
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 前端存储 - localStorage
  • 写代码的正确姿势
  • 正则表达式小结
  • 正则学习笔记
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 数论-逆元
  • #android不同版本废弃api,新api。
  • #define、const、typedef的差别
  • #FPGA(基础知识)
  • #pragma pack(1)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • %@ page import=%的用法
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (windows2012共享文件夹和防火墙设置
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (汇总)os模块以及shutil模块对文件的操作
  • (九)One-Wire总线-DS18B20
  • (四)Android布局类型(线性布局LinearLayout)
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)C#调用WebService 基础
  • (转)Sublime Text3配置Lua运行环境
  • .NET Core 实现 Redis 批量查询指定格式的Key