随笔分类 - oj记录
没事刷刷oj,总是会对自己有帮助的
摘要:Q:给出一个只包含0和1的二维矩阵,找出最大的全部元素都是1的长方形区域,返回该区域的面积。 A: 这个题感觉蛮巧妙的。 如果这个点为‘1’,先计算当前行的最大宽度,这说明最大宽度左边的都是保证可以是矩形的。然后往上看,用最小的宽度和当前的高度计算最大的矩形。 看图: 代码: public int
阅读全文
摘要:Q:将给出的整数x翻转。 例1:x=123,返回321 例2:x=-123,返回-321 你有思考过下面的这些问题么? 如果整数的最后一位是0,那么输出应该是什么?比如10,100 你注意到翻转后的整数可能溢出吗?假设输入是32位整数,则将翻转10000000003就会溢出,你该怎么处理这样的样例?
阅读全文
摘要:Q:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 A:
阅读全文
摘要:Q:合并k个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。 A:用小跟堆 public static ListNode mergeKLists(ArrayList<ListNode> lists) { if (lists == null || lists.size() == 0)
阅读全文
摘要:Q:将给定的链表中每两个相邻的节点交换一次,返回链表的头指针 例如, 给出1->2->3->4,你应该返回链表2->1->4->3。 你给出的算法只能使用常量级的空间。你不能修改列表中的值,只能修改节点本身。 A: public static ListNode swapPairs(ListNode
阅读全文
摘要:Q:给定一组不重叠的时间区间,在时间区间中插入一个新的时间区间(如果有重叠的话就合并区间)。这些时间区间初始是根据它们的开始时间排序的。 示例1: 给定时间区间[1,3],[6,9],在这两个时间区间中插入时间区间[2,5],并将它与原有的时间区间合并,变成[1,5],[6,9]. 示例2: 给定时
阅读全文
摘要:Q:给出一个仅包含字符'('和')'的字符串,计算最长的格式正确的括号子串的长度。对于字符串"(()"来说,最长的格式正确的子串是"()",长度为2.再举一个例子:对于字符串")()())",来说,最长的格式正确的子串是"()()",长度为4. A:所有错误的位置取出来,然后算中间正确的长度。 pu
阅读全文
摘要:Q:给出n个数字,代表直方图的条高,直方图每一条的宽度为1,请计算直方图中最大矩形的面积 上图是每条宽度为1, 高度 =[2,1,5,6,2,3].的直方图 图中的阴影部分是该直方图中面积最大的矩形,面积为10个单位 例如: 给出的高度 =[2,1,5,6,2,3], 返回10. A:遍历数组以当前
阅读全文
摘要:Q:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
阅读全文
摘要:Q:初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。 示例:
阅读全文
摘要:Q:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 PS:皇后可以攻击同⼀⾏、同⼀列、左上左下右上右下四个⽅向的任意单位。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q
阅读全文
摘要:Q:给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例: 输入: [5,2,6,1] 输出: [2,1,1,0] 解释: 5 的右侧有 2 个更小的元素 (2 和
阅读全文
摘要:Q:给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k pancakeSort(int[] A) { List array = new LinkedList(); if (A.length == 0) return array; int[] A2 = Arrays.copyOf(A, A
阅读全文
摘要:Q:根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4
阅读全文
摘要:联系二分查找 Q:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入
阅读全文
摘要:Q:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "ABC" 输出: "BANC" 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯
阅读全文
摘要:Q:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [0,
阅读全文
摘要:Q:假设你有一个特殊的键盘包含下面的按键: Key 1: (A):在屏幕上打印一个 'A'。 Key 2: (Ctrl A):选中整个屏幕。 Key 3: (Ctrl C):复制选中区域到缓冲区。 Key 4: (Ctrl V):将缓冲区内容输出到上次输入的结束位置,并显示在屏幕上。 现在,你只可以
阅读全文
摘要:Q:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1:
阅读全文
摘要:Q:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除
阅读全文

浙公网安备 33010602011771号