- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 字节笔试题
题目:P为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标轴范围在[0, 1e9) 内)如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。思路:这题思路其实不难,先按着x轴进行从小到大排序,然后从后往前进行比较,当当前的y值大于最大的maxNum(后面各个点的最大值)值时,说明右上角区域没有点,则将其加入
2020-08-15 22:56:40 826
原创 20.有效的括号
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路:右括号前面必须是相同的左括号,这种题目常见的思路就是使用栈。先把括号组放入到map中,右括号作为key,左括号作为value;依次遍历字符串,当遇到右括号时,查看stack的头看看是否一样,如果不一样则返回fasle;遇到左括号时直接压入stack。return的stack是否
2020-08-14 10:34:43 107
原创 经典题:前k个高频元素 必须要会
题目:给定一个非空的整数数组,返回其中出现频率前K高的元素思路:建立map用来存放每个数出现的频率,这一步大家都能想到,关键是怎么从map中读出前k个高频元素;这个时候我们应该想到使用优先队列;这边有两种方式,一种是使用默认的最小堆然后设定堆的大小为k;另一种方式是将最小堆转成最大堆,直接输出前k个元素。这里需要注意的是,队列中存入的map的entry,比较的时候直接根据entry中的getValue来比较频率。回顾:KeySet(): get() 遍历取出key的值entrySet(): g
2020-08-14 09:18:50 122
原创 394. 字符串解码
有一个多星期没有刷题,因为在泰州移动总部实习,才刚来不久不敢偷偷准备秋招,现在部门混的差不多了,可以偷偷准备秋招笔试。刷题果然要一直刷啊,要保持手感;今天做题状态不好,一些api记得也不是很清晰;所以,准备接下来的一段时间需要做好计划,分好任务和时间段。题目:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格
2020-08-12 17:05:12 154
原创 198.打家劫舍
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。思路:这道题使用动态规划解题,当
2020-08-09 21:58:38 914
原创 leetcode 15.三数之和
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> list = new ArrayList<>(); if(nu
2020-08-05 17:29:09 205
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人