08 2022 档案
摘要:问题 输入两个链表,找出它们的第一个公共节点。 解决 //1、暴力解法 class Solution { ListNode getIntersectionNode(ListNode headA, ListNode headB) { while(headA!=null){ ListNode check
阅读全文
摘要:问题 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 解决 //1、暴力解法,直接创建一个队列(使用数值模
阅读全文
摘要:问题 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 解决 // 1、暴力解法,利用字符数组进行输出 class Solution { pub
阅读全文
摘要:问题 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 解决 //采用宏观调度的方式 //可以看作n层进行操作,每层从左上角、右下角的a、b两点遍历 class Solution { List<Integer> list=new ArrayList<I
阅读全文
摘要:问题 假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。 在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。 给定一个整数数组 machines 代表从左至右每台洗衣机中的衣物数
阅读全文
摘要:问题 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 解决 class MedianFinder { PriorityQueue<Integer> queMi
阅读全文
摘要:问题 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 解决 // 1、利用api一级额外数据结构进行:先遍历排序再输出 class Solution { public int[] getLeastNumbers
阅读全文
摘要:问题 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 解决 //不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C) //加减、位运算 //1、逻
阅读全文
摘要:问题 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 解决 //1、暴力解法,将每一个字符与除它本身外的所有字符对比 O(n^2)\O(1) class Solution { public char firstUniqChar(String s) { i
阅读全文
摘要:问题: 银行内部的防盗安全装置已经激活。给你一个下标从 0 开始的二进制字符串数组 bank ,表示银行的平面图,这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布,由若干 '0' 和若干 '1' 组成。'0' 表示单元格是空的,而 '1' 表示单元格有一个安全设备。
阅读全文
摘要:问题: 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 解决 //1、动态规划 class Solution { public int maxSubArray(int[] nums) { int cur, proMax=0, res
阅读全文
摘要:问题 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 解决 //1、打标法(数学归纳),通过某一位上面的规律推广到所有位 class Solution { public int count
阅读全文
摘要:问题 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 解决 //1、根据路径判断 class Sol
阅读全文
摘要:问题 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 解决 //1、两次遍历 class Sol
阅读全文
摘要:问题 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 解决 //1、利用hashset的特性进行判断 class Solution { public int[] singleNumbers(int[
阅读全文
摘要:问题 给定一个字符串 s ,请计算这个字符串中有多少个回文子字符串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 解决 //1、遍历统计(双指针),时间复杂度O(n^3) class Solution { public int countSubstrings(S
阅读全文