LeetCode
fan儿
这个作者很懒,什么都没留下…
展开
-
什么是摩尔投票法?
目录一、摩尔投票法?概述步骤二、实战题目解题一、摩尔投票法?概述摩尔投票法又称多数投票法,主要用于解决一个数组中的众数的问题。步骤对抗阶段:分属两个候选人的票数两两对抗抵消计数极端:计算对抗结果中最后留下的候选人票数是否有效二、实战LeetCode主要元素题目数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。解题public int majorityElement(int[] nums) { int major=num原创 2020-12-02 10:49:00 · 1353 阅读 · 0 评论 -
如何才能不用额外变量交换两个值?
目录原理实战解析原理首先我们需要知道异或(^)计算:相同为0,不同为1。所以,进行异或计算的结果相当于是结合了两个值的特征。从中我们也可以知道,如果两个相同的值进行异或的话,则得到的结果为0。实战编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]提示:numbers.length == 2public int[] swapNumbers(int[] numbers) { nu原创 2020-11-29 14:11:29 · 287 阅读 · 0 评论 -
什么是快速幂???
目录原理示例实战原理核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数不断变小,所执行的循环次数也变小,而最后的结果却不会变。时间复杂度为 O(log₂N)示例例如:3^11的计算11的二进制为 1011=2^3+2^1+2^03^11=(3*2^3)*(3*2^1)*(3*2^0)实战LeetCode50例题: 实现 pow(x, n) ,即计算 x 的 n 次幂函数。输入: 2.00000, 10输出: 1024.00000public do原创 2020-11-07 21:13:24 · 238 阅读 · 0 评论 -
剑指offer56-数组中只出现一次的数字
目录题目思路具体实现题目一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例1: 输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]思路使用异或位运算,异或运算:使两个进行异或的数,不同为1相同为0如果数组中只有一个数出现一次,其余数出现两次,则对整个数组进行遍历一次进原创 2020-11-05 10:09:56 · 104 阅读 · 0 评论 -
LeetCode 搜索旋转排序数组(JAVA)
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: nums = [4,5,6,7,0,1,2], tar原创 2020-06-07 19:47:14 · 126 阅读 · 0 评论 -
LeetCode 两两交换链表中的节点(JAVA)
题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.代码实现public class TwoChange { public static void main(String[] args) { ListNode node1=new ListNode(1); ListNode no原创 2020-06-04 22:39:52 · 174 阅读 · 0 评论 -
LeetCode 删除链表的倒数第n个节点(JAVA)
题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.代码实现public class DeleteNNode { public static void main(String[] args) { ListNode node1=new ListNode(1); ListN原创 2020-06-04 21:43:49 · 195 阅读 · 0 评论 -
Leetco 两数相加(JAVA)
问题:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。*如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。*您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807代码实现public class 两数相加 {原创 2020-06-03 22:00:19 · 191 阅读 · 0 评论 -
LeetCode排序链表(JAVA)
问题:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5代码实现public class 排序链表 { public static void main(String[] args) { ListNode no原创 2020-06-03 21:53:07 · 282 阅读 · 0 评论