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

Day1--每日一练

  • 🍁 个人主页:爱编程的Tom
  • 💫 本篇博文收录专栏:每日一练-算法篇
  • 👉 目前其它专栏:c系列小游戏     c语言系列--万物的开始_  Java专栏等              
  • 🎉 欢迎 👍点赞✍评论⭐收藏💖三连支持一下博主🤞
  • 🧨现在的沉淀就是对未来的铺垫🎨 

目录

         前言 

                题目一 

                题目二 

                题目三 



前言 

每天练习三道题,今日题目:统计数字2出现次数、寻找公共元素、点击消除问题。 

题目一 

统计区间内某个数字出现的次数

例如在区间[2.22]的范围之中,统计数字2出现的次数(应为6次)。

本题要求在某一区间内,统计2出现的次数。

  • 第一次尝试解题:
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int start = scanner.nextInt();int end  = scanner.nextInt();Set<Integer> set = new HashSet<>();for (int i = start; i < end; i++) {if (i == 2 || String.valueOf(i).contains("2")) {set.add(i); }}System.out.println(set.size());}

通过提交发现,只通过了10%的测试用例,经过检查发现该代码只统计了出现2以及包含2的数字的次数,并没有解决问题。

更新思路使用除10取余,除10取整的方法,计算统计每个数字中2出现的次数,最后在累加得到最终值,使问题得到了解决,最终通过全部的测试用例 。

  • 更新后的代码:
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int start = scanner.nextInt();int end = scanner.nextInt();int count  = 0;for(int i = start; i <= end; i++) {count += countNum(i);}System.out.println(count);}public static int countNum(int num) {int count = 0;while (num > 0) {if (num % 10 == 2) {count++;}num /= 10;}return count;}

题目二 

计算两个数组之间的公共元素,例如数组1中 {1,2,3,4}, 数组2中{2,3,5,6},所对应的公共元素就是{2,3}。由此可得:

解题思想使用HashSet解决问题,看数组2是否包含数组1的内容,包含则输出并返回

并且通过全部的测试用例  

  • 解决代码
public ArrayList<Integer> intersection(ArrayList<Integer> nums1, ArrayList<Integer> nums2) {// write code hereHashSet<Integer> set1 = new HashSet<>(nums1);HashSet<Integer> set2 = new HashSet<>(nums2);ArrayList<Integer> result = new ArrayList<>();for (Integer num : set1) {if (set2.contains(num)) {result.add(num);}}return result;}

题目三 

经典的牛牛点击消除问题 :相邻的两个小写字母可以相互抵消,其它情况均不可以。

例如输入abbc,输出ac;输入absddsc,输出abc.

由上述可知,可以利用栈的特性来进行解决:先进后出 

思路:我们将其数据放入一个栈中,后入栈的与栈中数据对比,栈空入栈,相等出栈,不等入栈,最后输出栈中元素,逆序打印(因为先进后出的原因,出栈的数据是反的,需要逆序打印)

最终通过全部的测试用例 

解决代码: 

public static void main3(String[] args) {Stack<Character> stack = new Stack<>();Scanner sc = new Scanner(System.in);String str = sc.nextLine();for (int i = 0; i < str.length(); i++) {if (stack.empty()) {stack.push(str.charAt(i));} else if (str.charAt(i) == stack.peek()) {stack.pop();}else {stack.push(str.charAt(i));}}if (stack.empty()) {System.out.println(0);}String s = "";while (!stack.empty()) {s = s + stack.pop();}for (int i = s.length()-1; i >= 0 ; i--) {System.out.print(s.charAt(i));}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • P8086 『JROI-5』Music
  • 深入理解外观模式(Facade Pattern)及其实际应用
  • 网络钓鱼中的高级同形异义:网络安全的新威胁
  • 【前端】css控制背景图片缩放
  • C++list的模拟实现
  • 【Python123题库】#统计单词的数量 #各位数字之和为5的数 #输出单词
  • qt 按钮链接一个槽函数
  • 昇思25天学习打卡营第十六天|基于MindSpore的GPT2文本摘要
  • 操作系统---进程的同步和互斥(易错知识点梳理)
  • 银行小额支付系统的全面解析
  • jQuery Mobile 实例:构建响应式移动网页的实践指南
  • 【Javascript】微信小程序项目结构目录详解
  • 鸿蒙 arkts 实现手机号中间四位隐藏, 可以使用 substring [ 简单适用新手 ]
  • RedHat运维-Linux存储管理基础4-LVM的相关减小操作
  • 服务攻防——中间件Jboss
  • 2017 年终总结 —— 在路上
  • 4个实用的微服务测试策略
  • CSS居中完全指南——构建CSS居中决策树
  • CSS相对定位
  • Druid 在有赞的实践
  • ES6简单总结(搭配简单的讲解和小案例)
  • JavaScript中的对象个人分享
  • Java反射-动态类加载和重新加载
  • JDK9: 集成 Jshell 和 Maven 项目.
  • MySQL的数据类型
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里云Kubernetes容器服务上体验Knative
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 解析带emoji和链接的聊天系统消息
  • 漂亮刷新控件-iOS
  • 携程小程序初体验
  • 阿里云API、SDK和CLI应用实践方案
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #QT项目实战(天气预报)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #window11设置系统变量#
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (十一)c52学习之旅-动态数码管
  • (四)JPA - JQPL 实现增删改查
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (转)创业家杂志:UCWEB天使第一步
  • (转)大道至简,职场上做人做事做管理
  • (自用)仿写程序
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .Net Core和.Net Standard直观理解
  • .NET MVC之AOP
  • .NET 表达式计算:Expression Evaluator
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明