新手leetcode 126周赛被拷打篇

100262. 求出加密整数的和

难度:568

给你一个整数数组 nums ,数组中的元素都是  整数。定义一个加密函数 encrypt ,encrypt(x) 将一个整数 x 中 每一个 数位都用 x 中的 最大 数位替换。比方说 encrypt(523) = 555 且 encrypt(213) = 333 。

请你返回数组中所有元素加密后的  。

示例 1:

输入:nums = [1,2,3]

输出:6

解释:加密后的元素位 [1,2,3] 。加密元素的和为 1 + 2 + 3 == 6 。

示例 2:

输入:nums = [10,21,31]

输出:66

解释:加密后的元素为 [11,22,33] 。加密元素的和为 11 + 22 + 33 == 66 。

提示:

  • 1 <= nums.length <= 50
  • 1 <= nums[i] <= 1000

 状态:完成

class Solution {public int sumOfEncryptedInt(int[] nums) {int sum=0;for(int i=0;i<nums.length;i++){sum+=encrypt(nums[i]);}return sum;}public int encrypt(int x){String str = x+"";int max=-1;for(int i=0;i<str.length();i++){max=max>Integer.valueOf(str.charAt(i)-'0')?max:Integer.valueOf(str.charAt(i)-'0');}String result="";for(int i=0;i<str.length();i++){result+=(max+"");}System.out.println(result);return Integer.valueOf(result);}
}

3080. 执行操作标记数组中的元素

难度:1595

给你一个长度为 n 下标从 0 开始的正整数数组 nums 。

同时给你一个长度为 m 的二维操作数组 queries ,其中 queries[i] = [indexi, ki] 。

一开始,数组中的所有元素都 未标记 。

你需要依次对数组执行 m 次操作,第 i 次操作中,你需要执行:

  • 如果下标 indexi 对应的元素还没标记,那么标记这个元素。
  • 然后标记 ki 个数组中还没有标记的 最小 元素。如果有元素的值相等,那么优先标记它们中下标较小的。如果少于 ki 个未标记元素存在,那么将它们全部标记。

请你返回一个长度为 m 的数组 answer ,其中 answer[i]是第 i 次操作后数组中还没标记元素的  。

示例 1:

输入:nums = [1,2,2,1,2,3,1], queries = [[1,2],[3,3],[4,2]]

输出:[8,3,0]

解释:

我们依次对数组做以下操作:

  • 标记下标为 1 的元素,同时标记 2 个未标记的最小元素。标记完后数组为 nums = [1,2,2,1,2,3,1] 。未标记元素的和为 2 + 2 + 3 + 1 = 8 。
  • 标记下标为 3 的元素,由于它已经被标记过了,所以我们忽略这次标记,同时标记最靠前的 3 个未标记的最小元素。标记完后数组为 nums = [1,2,2,1,2,3,1] 。未标记元素的和为 3 。
  • 标记下标为 4 的元素,由于它已经被标记过了,所以我们忽略这次标记,同时标记最靠前的 2 个未标记的最小元素。标记完后数组为 nums = [1,2,2,1,2,3,1] 。未标记元素的和为 0 。

示例 2:

输入:nums = [1,4,2,3], queries = [[0,1]]

输出:[7]

解释:我们执行一次操作,将下标为 0 处的元素标记,并且标记最靠前的 1 个未标记的最小元素。标记完后数组为 nums = [1,4,2,3] 。未标记元素的和为 4 + 3 = 7 。

提示:

  • n == nums.length
  • m == queries.length
  • 1 <= m <= n <= 105
  • 1 <= n <= 105
  • queries[i].length == 2
  • 0 <= indexi, ki <= n - 1

 状态:超时,后面看别人思路写出来了。

思路:一开始我是对nums数组排序了,然后标记的时候在nums数组中查找相同的值导致超时了。我们可以不对值进行排序我们创建一个数组对下标进行排序,nums中值越小的下标越在前面,这样就省去对nums数组进行查找值的操作了,降低了时间复杂度。

Arrays.sort(id,(i,j)->nums[i]-nums[j]);

上面的函数可以对 id数组根据在nums里的值从小到大的进行排序,这样是升序将顺序调转就是降序。要注意sort时这个数组的类型不能是基本类型如int的,要是Integer这种封装类型。

class Solution {public long[] unmarkedSumArray(int[] nums, int[][] queries) {Integer[] id=new Integer[nums.length];long sum=0;for(int i=0;i<id.length;i++){id[i]=i;sum+=nums[i];}System.out.println(sum);Arrays.sort(id,(i,j)->nums[i]-nums[j]);long[] result=new long[queries.length];int u=0;for(int i=0;i<queries.length;i++){int index=queries[i][0];int num=queries[i][1];sum-=nums[index];nums[index]=0;for(int k=0;k<num;k++){for(;u<id.length;u++){if(nums[id[u]]==0){continue;}sum-=nums[id[u]];nums[id[u]]=0;break;}}result[i]=sum;}return result;}
}

3081. 替换字符串中的问号使分数最小

难度:1921

给你一个字符串 s 。s[i] 要么是小写英文字母,要么是问号 '?' 。

对于长度为 m 且  含有小写英文字母的字符串 t ,我们定义函数 cost(i) 为下标 i 之前(也就是范围 [0, i - 1] 中)出现过与 t[i] 相同 字符出现的次数。

字符串 t 的 分数 为所有下标 i 的 cost(i) 之  。

比方说,字符串 t = "aab" :

  • cost(0) = 0
  • cost(1) = 1
  • cost(2) = 0
  • 所以,字符串 "aab" 的分数为 0 + 1 + 0 = 1 。

你的任务是用小写英文字母 替换 s 中 所有 问号,使 s 的 分数最小 

请你返回替换所有问号 '?' 之后且分数最小的字符串。如果有多个字符串的 分数最小 ,那么返回字典序最小的一个。

示例 1:

输入:s = "???"

输出: "abc"

解释:这个例子中,我们将 s 中的问号 '?' 替换得到 "abc" 。

对于字符串 "abc" ,cost(0) = 0 ,cost(1) = 0 和 cost(2) = 0 。

"abc" 的分数为 0 。

其他修改 s 得到分数 0 的字符串为 "cba" ,"abz" 和 "hey" 。

这些字符串中,我们返回字典序最小的。

示例 2:

输入: s = "a?a?"

输出: "abac"

解释:这个例子中,我们将 s 中的问号 '?' 替换得到 "abac" 。

对于字符串 "abac" ,cost(0) = 0 ,cost(1) = 0 ,cost(2) = 1 和 cost(3) = 0 。

"abac" 的分数为 1 。

提示:

  • 1 <= s.length <= 105
  • s[i] 要么是小写英文字母,要么是 '?' 。

状态:没做出来

 思路:cost是在该位置之前出现的相同字符次数,替换字符串中的'?'使得分数最小,同时要让字典序最小。做个实验 , s="aaa?aa", '?'处填入a,会总体分数会增加5, s="?aaaaa" ,'?'出还是填入'a'大小也是增加5, 可以得出在哪填入字符是不影响总体分数大小的。所以只要得出出现次数最少的字符在各个位置上是什么就可以了,而且是不要求顺序的所以我们可以想到用最小堆去解决问题。

堆其实就是一个完全二叉树,所以堆可以用数组这个结构进行存储.

堆分为大根堆跟小根堆,大根堆就是父节点要大于子节点,且第一个节点肯定为最大的数字.小根堆相反. 假设数组的下标为i,其父节点的下标就是i/2(整除),左子节点的下标就是i*2+1,右子节点的下标是i*2+2.

在java中最小堆可以用PriorityQueue去实现,他的底层就是用堆去实现的参考链接。

创建一个数组记录每个字母的出现次数,再把这个数组放进优先队列中,这个优先队列存储Pair结构,因为这题还要求字典序最小,采用小根堆的方式存储.然后创建一个char用于存储替换?的值,循环得到优先队列及char,再对char进行排序,因为要求字典序最小,而放哪总的值都是不变的所以还要进行排序,最后放进数组中.

class Solution {public String minimizeStringValue(String s) {int[] arr =new int[26];ArrayList<Integer> list= new ArrayList();for(int i=0;i<s.length();i++){if(s.charAt(i)>='a'&&s.charAt(i)<='z'){arr[s.charAt(i)-'a']++;}else{list.add(i);}}if(list.size()==0) return s;PriorityQueue<Pair<Integer,Character>> queue=new PriorityQueue<>((i,j)->{Integer c=i.getKey().compareTo(j.getKey());return c!=0?c:i.getValue().compareTo(j.getValue());});for(int i=0;i<arr.length;i++){queue.add(new Pair(arr[i],(char)('a'+i)));}StringBuilder sb =new StringBuilder();char[] t=new char[list.size()];for(int i=0;i<list.size();i++){Pair<Integer,Character> number = queue.poll();t[i]=number.getValue();queue.add(new Pair(number.getKey()+1,number.getValue()));}Arrays.sort(t);for(int i=0;i<list.size();i++){int index=list.get(i);sb.append(s.substring(sb.length(),index));sb.append(t[i]);}sb.append(s.substring(sb.length(),s.length()));return sb.toString();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外包干了1个月,技术明显进步。。。

我是一名大专生&#xff0c;自19年通过校招进入湖南某软件公司以来&#xff0c;便扎根于功能测试岗位&#xff0c;一晃便是近四年的光阴。今年8月&#xff0c;我如梦初醒&#xff0c;意识到长时间待在舒适的环境中&#xff0c;已让我变得不思进取&#xff0c;技术停滞不前。更令…

Uibot (RPA设计软件)财务会计Web应用自动化(批量开票机器人)

Uibot (RPA设计软件&#xff09;Mage AI智能识别&#xff08;发票识别&#xff09;———机器人的小项目友友们可以参考小北的课前材料五博客~ (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北的前两篇博客&#xff0c;友友们我们…

YOLOv5目标检测学习(7):验证部分val.py简要分析;训练、验证、推理三文件的关系

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、val.py的大致结构如下&#xff1a;1.0 准备工作1.获取文件路径2.存储预测信息为.txt文件3.存储预测信息为coco格式的.json文件 1.1 主函数main&#xff1a;…

[MTK6771] android13系统启用OMAPI 支持esim.me

OMAPI是啥&#xff1f;看看谷歌的解释&#xff1a; 说了一大堆懂的人不需要看&#xff0c;不懂的还是看不懂&#xff0c;我就是后者 总之说人话就是&#xff0c;像SIM卡&#xff0c;NFC这类模块需要用到这个东西&#xff0c;那么接着往下看 上层APP想要使用这个OMAPI供应商稳…

五、分支结构

一、程序的组织结构 无论程序是大是小&#xff0c;都可以用顺序结构、选择结构和循环结构表示 二、单分支结构 单分支结构&#xff1a;如果表达式的值是True就执行代码&#xff0c;如果表达式的值是False就跳过语句执行后面语句 ageint(input(请输入你的年龄&#xff1a;)) i…

富格林:正规观念阻挠诱导被骗

富格林悉知&#xff0c;现货黄金一直是市场上备受关注的投资产品。新手投资者由于经验不足以及没有正规观念指引&#xff0c;容易出现诱导被骗的情况。事实上&#xff0c;拥有正规的观念指引可以在很大程度阻挠我们诱导被骗。下面富格林给大家分享一些阻挠被骗的做单技巧。 找到…

Web框架开发-Django-数据库表的单表查询

一、添加表记录 对于单表有两种方式 方式一: 1 2 book_obj=models.Book(title="python全栈开发",price=100,publishData="2015-08-08", author=张三, publish=机械工业出版社) book_obj.save() 方式二: 1 2 # 方式二: models.Book.objects.cr…

综合系列之大四学生找工作的自荐信模板推荐

模板一 尊敬的招聘负责人&#xff1a; 您好&#xff01;我是一名即将毕业的大四学生&#xff0c;非常荣幸有机会向您自荐&#xff0c;希望能有机会加入贵公司。 在学校期间&#xff0c;我始终保持积极进取的态度&#xff0c;不断努力学习专业知识&#xff0c;提升自己的综合…

C语言例3-31:位移位运算的例子

1. 位移位运算符 左移 <<右移 >>运算对象只能是整型或字符型数据参与位移位运算时&#xff0c;运算对象以二进制形式进行相应的按位运算。 2. 运算规则 移位时&#xff0c;移出的位数全部丢弃&#xff0c;移出的空位补入的数与左移还是右移有关。若是左移&#…

“贷”动“新质生产力”?各大银行出手了!(附产业图谱下载)

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 自去年9月首次提出以来&#xff0c;新质生产力的重要性不断得到强化&#xff0c;今年两会期间&#xff0c;更是被写入了政府工作报告并被列为了十大任务之首。 伴随新质生产力培育元年拉开序幕&#xff0c;金融…

HarmonyOS应用开发者高级认证流程及其题库

一、HarmonyOS应用开发者高级认证 掌握鸿蒙的核心概念和端云一体化开发、数据、网络、媒体、并发、分布式、多设备协同等关键技术能力,具备独立设计和开发鸿蒙应用能力。认证流程如下: 1.1 课程学习 通过在线课程学习,掌握HarmonyOS高级知识。 1.2 考试说明 1、考试需实…

深度学习 精选笔记(12)卷积神经网络-理论基础1

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

SpringBoot面试题及答案

1、spring-boot-starter-parent 有什么用 &#xff1f; spring-boot-starter-parent 是一个特殊的 starter&#xff0c;它用于提供 Spring Boot 应用的默认配置。当你在项目中以父项目的形式引入 spring-boot-starter-parent 时&#xff0c;它将带来以下好处&#xff1a; 预定…

Docker启动失败,报错Is the docker daemon running? Is the docker daemon running?

问题&#xff1a; docker没有正常启动 解决方法&#xff1a; systemctl daemon-reload systemctl restart docker.service

【MySql实战--日志系统:一条SQL更新语句是如何执行的?】

前面我们系统了解了一个查询语句的执行流程&#xff0c;并介绍了执行过程中涉及的处理模块。相信你还记得&#xff0c;一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块&#xff0c;最后到达存储引擎。 那么&#xff0c;一条更新语句的执行流程又是怎…

Git分支详解:分支创建、合并、删除等操作

Git是一种强大的分布式版本控制系统&#xff0c;它的分支功能使得团队协作和代码管理变得更加灵活和高效。分支可以让开发人员在不影响主线开发的情况下进行并行开发和实验性工作。本篇博客将详解Git分支的创建、合并、删除等操作&#xff0c;帮助你更好地理解和使用Git的分支功…

LeetCode-60题:排列序列解法一(原创)

【题目描述】 给出集合 [1,2,3,...,n]&#xff0c;其所有元素共有 n! 种排列。按大小顺序列出所有排列情况&#xff0c;并一一标记&#xff0c;当 n 3 时, 所有排列如下&#xff1a;"123" 、"132" 、"213" 、"231"、"312"、…

ppt插件构思

功能&#xff1a; 1. 编辑代码 2. 代码运行 3. 代码检查 4. 代码格式化 5. 运行简单的可视化、游戏化、交互式 这是一个针对PPT&#xff08;Microsoft PowerPoint&#xff09;的插件概念描述&#xff0c;该插件旨在提升PPT在演示编程相关内容时的功能丰富度。以下是这个插…

用户需求沟通的4大常见障碍及解决方案

有效的用户需求沟通对于软件项目的成功至关重要。它可以帮助项目团队更好地理解用户需求&#xff0c;从而设计出更符合用户期望的产品&#xff0c;有助于建立和维护良好的客户关系&#xff0c;提高客户满意度。 因此&#xff0c;我们需重视用户需求沟通中的常见障碍&#xff0c…

低功率接地故障断路器(GFI)控制芯片D4147简介

应用领域 D4147主要用于三线制GFCI输出接口、GFCI芯片断路器、便携式GFCI线路等领域的产品&#xff0c;侦测并防护火线对地故障和零线对负载短路故障。 功能介绍 D4147 为低功率接地故障断路器&#xff08;GFI&#xff09;控制器芯片&#xff0c;用于检测危险的接地故障电流路径…