刷题
安泽、
曾经的ACMER。
专注于Java的WEB开发。
赶路人,星不负!
展开
-
BM100 设计LRU缓存结构(java实现)
【代码】BM100 设计LRU缓存结构(java实现)原创 2024-02-23 17:21:02 · 677 阅读 · 0 评论 -
分糖果问题(java实现)
给定一个数组 arr 代表得分数组,请返回最少需要多少糖果。要求: 时间复杂度为 O(n) 空间复杂度为 O(n)牛客,BM95 分糖果问题。最优分配方案为1,1,2。最优分配方案是1,1,1。原创 2024-02-19 15:57:31 · 538 阅读 · 0 评论 -
旋转数组(java实现)
一个数组A中存有 n 个整数,在不允许使用另外数组的前提下,将每个整数循环向右移 M( M >=0)个位置,即将A中的数据由(A0 A1 ……AN-1 )变换为(AN-M ……AN-1 A0 A1。AN-M-1 )(最后 M 个数循环移至最前面的 M 个位置)如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法!ps:仅提供思路,不保证代码能oc。新年第一题,避免老年痴呆。原创 2024-02-18 14:33:47 · 426 阅读 · 0 评论 -
统计圆内格点数目(java实现)
统计圆内格点数目(java实现)上周力扣周赛的题目,本来就做一道溜了(没空做),后来无聊想了想第二题可以暴力解题,就做了下。(绝对不是因为我想水文章)题目描述给你一个二维整数数组 circles ,其中 circles[i] = [xi, yi, ri] 表示网格上圆心为 (xi, yi) 且半径为 ri 的第 i 个圆,返回出现在 至少一个 圆内的 格点数目 。注意:格点 是指整数坐标对应的点。圆周上的点 也被视为出现在圆内的点。示例 1:输入:circles = [[2,2,1]]原创 2022-04-28 10:46:19 · 519 阅读 · 0 评论 -
最短的桥-java
在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。) 现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。 返回必须翻转的 0 的最小数目。(可以保证答案至少是 1 。)示例 1:输入:A = [[0,1],[1,0]]输出:1示例 2:输入:A = [[0,1,0],[0,0,0],[0,0,1]]输出:2示例 3:输入:A = [[1,1,1,1,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,1,1,1原创 2021-07-20 10:46:46 · 179 阅读 · 0 评论 -
剑指 Offer 61. 扑克牌中的顺子
剑指 Offer 61. 扑克牌中的顺子问题描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True原因分析:提示:这里填写问题的分析:例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Hand原创 2021-05-08 14:37:43 · 49 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
剑指 Offer 15. 二进制中1的个数问题描述;请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:0000000000000000000000001原创 2021-05-03 11:26:09 · 61 阅读 · 0 评论 -
快速幂
快速幂前言:此是笔者学习快速幂的一些感想笔记,写下记录。何为快速幂,其实是一种解决pow(x,n)问题提供的一种思路。即运用二分法加二进制运算来实现快速求出x^n的解。当我们遇到求x^n时,第一个想法便是不断的乘以x嘛,乘个n次就出来了,但O(n)的时间复杂度是不够的,就想着能不能简化求解步骤呢。利用二分法便可优化,如图:可将x的n次方简化为O(logn)复杂度求解,如何解出来呢?看图就知利用二进制可以很好地表示出应当乘多少个x的i次方(i = 1 ,2,4,8…)。然后如何将二进制表示原创 2021-05-03 00:28:35 · 62 阅读 · 0 评论 -
子集
子集题目描述:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。思路:有一个清奇的思路就是初始化一个列表,加一原创 2021-04-08 21:15:54 · 141 阅读 · 0 评论 -
螺旋矩阵
螺旋矩阵问题描述;给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]思路:用一个变量来表示往哪边走,按照右下左上的顺序开始走。然后当当前位置越界以及当前原创 2021-04-07 19:22:37 · 178 阅读 · 0 评论 -
单词搜索
单词搜索题目描述:给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返原创 2021-04-05 20:23:16 · 76 阅读 · 0 评论 -
矩阵置零
矩阵置零题目描述:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:原创 2021-04-04 23:07:14 · 491 阅读 · 0 评论 -
不同路径 II
不同路径 II问题描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共原创 2021-04-03 13:32:29 · 101 阅读 · 0 评论 -
不同路径
不同路径问题描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向下 -> 向下向下 -> 向下 -> 向右向下 -&原创 2021-04-03 13:09:24 · 122 阅读 · 0 评论 -
跳跃游戏
跳跃游戏题目描述:给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可原创 2021-04-01 19:13:18 · 137 阅读 · 0 评论 -
最小路径和
最小路径和题目描述:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。思路:因为只能向右或向下走,则普遍情况每个点只能接收左边或上边来的值,加上两者的最小值即可。特殊情况,第一行要不断加上左边的值,第一列要不断加上上边的值。代码:class Solution { public int minPathSum(int[][] grid) { int high = grid.原创 2021-04-01 18:38:17 · 66 阅读 · 0 评论 -
字符串相乘 【java实现】
字符串相乘题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库的大原创 2021-03-19 22:02:23 · 1157 阅读 · 0 评论 -
HDU - 1237 - 简单计算器
HDU - 1237 - 简单计算器题目:读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。Sample Input1 + 24 + 2 * 5 - 7 / 110Sample Output3.0013.36思原创 2021-03-15 17:07:36 · 122 阅读 · 1 评论 -
HDU - 1022- Train Problem I
HDU - 1022- Train Problem I题目:As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world v). But here co原创 2021-03-15 16:59:47 · 112 阅读 · 0 评论 -
四数之和 java实现
四数之和问题描述:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例 2:输入:nums = [], target = 0原创 2021-03-12 20:38:10 · 447 阅读 · 0 评论 -
三数之和 java实现
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。思路:先将初始的数组排序,然后先指定一个a,b和c用双指针开始查询,即三数和大于0,右指针左移,反之左指针右移。记得去掉重复得数。代码如下:class Solution { public List<List<Integer>> threeSum(int[] n原创 2021-03-07 09:53:53 · 934 阅读 · 0 评论 -
力扣-整数转罗马数字 java实现
力扣-整数转罗马数字 java实现题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII原创 2021-03-02 17:03:05 · 207 阅读 · 0 评论 -
力扣-盛最多水的容器 java实现
力扣-盛最多水的容器 java实现描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器测试用例:示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)原创 2021-03-02 16:22:26 · 322 阅读 · 1 评论 -
罗马数字转整数【java实现】
罗马数字转整数【java实现】思路:先建立一个hashmap将I至M七个罗马符号及其对应的数字值存储下来,然后将字符串转换为int整数数组。初始化一个sum,从左向右遍历到倒数第二位,如果a[i]大于a[i+1],则加上a[i],否则减去a[i]。注意最后加上最后一位的a[s.length()-1]。代码如下:class Solution { public int romanToInt(String s) { HashMap<String , Integer> ma原创 2021-03-01 21:33:27 · 302 阅读 · 0 评论 -
无重复字符的最长子串【java实现】
无重复字符的最长子串【java实现】示例 1: 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例2: 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3: 输入: s = “pwwkew” 输出: 3 0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成思路:建立一个int数组(初始量为-1)用来确定字符对应位置原创 2021-03-01 20:53:18 · 1063 阅读 · 0 评论 -
回文数 【java】
回文数 【java】判断整数x是否为回文数。x为负数,则一定不为回文数。x为非负数时,把x逆序组合成一个数s,判断s与x关系即可。(如123和321)代码如下:class Solution { public boolean isPalindrome(int x) { if(x<0) return false; else { int s=0; int x0=x; while(x!=原创 2021-03-01 19:43:54 · 73 阅读 · 0 评论 -
题解 P2142 【高精度减法】 Java实现
题解 P2142 【高精度减法】 Java实现 23333大精度? c++? 不!用java直接搞定AC代码如下:import java.math.BigInteger; import java.util.Scanner;public class Main {public static void main(String[] args) { Scanner in = new Scanner(System.in); BigInteger a; BigInteger b;原创 2021-03-01 19:37:26 · 110 阅读 · 0 评论 -
题解【潜伏者】 C语言实现
题解【潜伏者】 C语言实现基本上是先建一个密码表 一个个对应的存进去。如果一个字母对应了多个密码 ,多个字母对应了多个密码 ,密码表没有填满这三种情况就是错误编码 否则按照密码表把第三个字符串翻译出来AC代码如下:#include<stdio.h>#include<string.h>int main(){ int f=0,f1=0; char mima[26]={'\0'};//初始化密码表 后有用 char a[150],b[150],c[原创 2021-03-01 19:33:59 · 1254 阅读 · 6 评论