
leetcode_java
leileii
这个作者很懒,什么都没留下…
展开
-
leetcode刷题java之206. 反转链表
题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] PS:感觉这类的题目在前面做过好多了。。。 进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题? 思路 设置一个pre来作为新的反转之后的链表,设计一个循环(head不为空)从头到尾遍历head:先用temp来保存head.next;将head指向pre,代表做的反向操作;pre进行更新为head,表示最新的反向链表;head向后更新为temp原创 2021-07-12 20:39:39 · 345 阅读 · 0 评论 -
leetcode刷题java之205.同构字符串
题目 给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 示例 1: 输入:s = “egg”, t = “add” 输出:true 示例 2: 输入:s = “foo”, t = “bar” 输出:false 思路 判断s和t相同位置的字符是否一一对应:设计两个哈希表,一个对应s原创 2021-06-09 17:29:39 · 223 阅读 · 0 评论 -
leetcode刷题java之计数质数
题目 统计所有小于非负整数 n 的质数的数量。 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 思路 一种方法为暴力法,即判断当前数能不能被前面的数整除,但是这样的计算量太大了 另一种方法为埃氏筛,该算法由希腊数学家厄拉多塞(EratosthenesEratosthenes)提出,称为厄拉多塞筛法,简称埃氏筛。 这种方法不同与上一种向前遍历,是一种向后遍历的方法。先设定一个长度为n的数组isPrime,用来记录对应的数字是否为质数,设置一原创 2021-05-20 16:46:39 · 252 阅读 · 0 评论 -
leetcode刷题java之移除链表元素
题目 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 思路 一个简单的链表题目,可以练习java与链表使用 先设一个用于保存head的res,使用res来指向head; 然后设定pre和cur分别保存之前的值与当前的值; 然后判断cur的值是否和前一个相同,(1)如果相同,pre指向cur的下一个(2)如原创 2021-05-17 16:11:52 · 211 阅读 · 0 评论 -
Leetcode刷题java之287. 寻找重复数
题目 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。 思路1 二分法 计算数组中小于等于mid的值(cnt)有多少个,若cnt<=mid值,则代表重复的值在mid的右侧;若cnt>mid值,则代表重复的值在mid的左侧; 代码1 class Solution { public int findDuplicate(int[] nums) {原创 2021-04-29 18:21:41 · 161 阅读 · 0 评论 -
Leetcode刷题java之202. 快乐数
题目要求 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。 思路 首先设计一个取到下一个数的函数:对构成这个数的每一个数字取平方加到一起,得到下一个数。 这个题可以通过快慢指针(慢指针指向下一个数,快指针指向下两个数)来进行循环遍历;如果两个原创 2021-04-28 18:03:29 · 126 阅读 · 0 评论 -
leetcode刷题java之201. 数字范围按位与(java二进制十进制转换,与运算)
思路 对一定范围内的数进行与运算,如果依次将数进行位运算时间复杂度会超出范围,所以应当寻找简单方法。发现规律:结果为它们的公共前缀(详解见leetcode官方题解其他类型的位运算就没这么简单了)。在首数字小于末数字的情况下,将首末数字做右移位运算,并记录位运算次数shift。跳出循环后将数字做左位移运算shift次。 感觉有位运算之后,程序会非常简单,但是思路要难一些。 JAVA代码 class Solution { public int rangeBitwiseAnd(int left, int原创 2021-04-14 11:49:25 · 157 阅读 · 0 评论 -
leetcode刷题——2.ListCode
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片. /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Sol...原创 2019-04-05 00:59:50 · 1026 阅读 · 0 评论 -
leetcode刷题——1.两数之和
leetcode刷题——1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums1 = 2 + 7 = 9 所以返回 [...原创 2019-04-03 16:33:25 · 167 阅读 · 0 评论