![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
万事无Bug
南昌大学 低调学Java
展开
-
删除链表倒数第n个节点
删除链表倒数第n个节点解法一:直接遍历出链表长度L,然后删除第L-n+1个节点即可:class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy = new ListNode(0, head); int length = getLength(head); ListNode cur = dummy; for (int原创 2021-11-30 10:58:37 · 250 阅读 · 0 评论 -
三数之和Java
三数之和题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = []输出:[]输入:nums = [0]输出:[]先记录下我这个菜鸡的代码:class Solution { public List原创 2021-11-29 15:37:26 · 341 阅读 · 0 评论 -
整数转罗马数字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, 即为 XX + V +转载 2021-11-26 18:13:25 · 405 阅读 · 0 评论 -
快速排序 Java
快排算法 Java如题描述菜鸟的代码写的有点难懂,我这边根据思路自己写了一个快排。大家可以借鉴。快排思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。public class QuickSort { public static void sort(int []nums){ if (nums.length==1){原创 2021-09-27 15:36:13 · 66 阅读 · 0 评论 -
冒泡排序 Java
冒泡排序如题,简单解释下冒泡排序吧。每次遍历从第一个元素开始,与第二个元素作比较,如果前者大于后者则交换位置,然后第二个元素与第三个元素比较,依次类推。最后就会把数组中最大的元素置于数组最后方。而后继续如此,每次都把待排序数字中最大的数字置于最后方,直至排序完成注意冒泡排序时间复杂度是O(n^2),如果在有时间限制的地方,可能会超时!!!遇到这种情况建议使用快排,快排复杂度是(nLog (n))。public class MaoPao { public static void sort(i原创 2021-09-27 15:34:41 · 135 阅读 · 0 评论 -
最长回文子串Java
最长回文子串Java描述:给你一个字符串 s,找到 s 中最长的回文子串。解释:利用中心扩展法,从第一个元素开始,判断左右元素是否相同,如果相同,继续向左向右判断(该方法针对回文串长度为奇数)。另外,如果回文串长度为偶数,则判断i和i+1是否相同,若相同,继续向左向右判断。我和leetcode官方思路相同,使用中心扩展法。下面我的代码:public class Solution { public static String longestPalindrome(String s) {原创 2021-09-26 16:35:11 · 268 阅读 · 0 评论 -
两数相加 Java
两数相加 Java描述:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]提示:每个链表中的节点数在范围 [原创 2021-09-24 17:42:12 · 372 阅读 · 0 评论 -
两数之和 Java
两数之和题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。如题,力扣上第一题,也是一道简单题。有两种解法,我的解法和官方基本一模一样,可能是太简单了吧,代码基本重合。1、暴力遍历://暴力解法,从第一个开始往后比较,然后从第二个开始往后比较。class Solution {原创 2021-09-24 16:01:25 · 81 阅读 · 0 评论 -
求数组中出现频率第二的数
求数组中出现频率第二的数描述:如题,给定一个数组,让你求出数组中数量第二的数值?作者自述:本题目是作者字节跳动面试时被问到的面试题,由于面试时间只剩下不到十分钟,当时没有写出来,面试后再思考解决出来了。这是leetcode上没有的题目,百度也没有太多正确的信息,故作者在这里分想自己的思路。直接上代码:public class Solution{ public static int getmaxtimes(int []a){ HashMap<Integer, Inte原创 2021-09-19 23:50:05 · 618 阅读 · 0 评论 -
Java寻找峰值(二分思路)
Java寻找峰值(二分思路)题目描述:峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。提示条件:1 <= nums.length <= 1000-2^31 <= nums[i] <= 2 ^31 - 1对于所有有效的 i 都有原创 2021-09-16 21:04:35 · 488 阅读 · 0 评论 -
字符串转换成整数
字符串转换成整数题目描述:写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。注原创 2021-09-09 17:35:05 · 206 阅读 · 0 评论 -
单链表反转
单链表反转题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。(这里我好迷,LeetCode上意思是head头结点也默认要存储一个数据,否则会错)public class Solution2 { public ListNode reverseList(ListNode head) { Stack<Integer> s = new Stack<>(); ListNode n=head; while (原创 2021-09-08 21:52:27 · 233 阅读 · 0 评论 -
求整数反转
整数反转题目:给定一个整数,可正可负,求其反转数。如果反转后整数超过 32 位的有符号整数的范围 [−2^31,2^31 − 1] ,就返回 0,且环境不允许存储64位的整数。另外附上:-2^31 = -21474836482^31-1 = 2147483647下面是我这个菜鸡的写法,先给你们看下,后面再附上观摩的大佬的写法。//整数反转class Solution { public static int reverse(int x) { int n=Math.ab原创 2021-09-08 00:51:19 · 134 阅读 · 0 评论 -
Java算法-盛最多水的容器
Java算法-盛最多水的容器题目:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49原创 2021-08-27 14:32:20 · 133 阅读 · 0 评论 -
最长不重复子串
最长不重复子串题目:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。public class Solution { public int lengthOfLongestSubstring(String s) { int n = s.length(); Set<Character> set = new HashSet<Character>(); int max= 0, i = 0, j = 0;原创 2021-08-27 14:16:44 · 60 阅读 · 0 评论 -
求两整数间质数个数
求两整数间质数个数面试碰到的算法题,分享我的代码:public class Solution { private static int prime(int num){ boolean flag=true; for (int i=2;i<=Math.sqrt(num);i++){ if (num%i==0){ flag=false; break; }原创 2021-08-26 23:03:31 · 219 阅读 · 0 评论