LeetCode
保持码感,精益求精
Champion-Dai
桃李不言,下自成蹊
展开
-
寻找链表(ListNode)中间节点的三种解法
题目描述给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next =原创 2021-12-19 12:35:26 · 566 阅读 · 0 评论 -
反转字符串
字符串反转,简单点原创 2021-12-18 23:13:11 · 216 阅读 · 0 评论 -
两数之和 II - 输入有序数组
两数之和,简单点,刷题的时候难易衔接原创 2021-12-18 23:06:38 · 265 阅读 · 0 评论 -
刷题日记:将零移动到末尾
题目内容给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]题目解析,思路及解法根据题目,我们可以使用双指针的方式如下:左指针left指向已经处理好序列的尾部,右指针right指向未处理序列的头部。右指针不断的向右移动,遇到非0的元素,就和左指针所指向的元素进行值交换,同时左指针右移。注意以下性质:1、左指针左边所对应的数均为非0数。2、右指针的左边向左一直到左指针对应的原创 2021-12-16 20:00:00 · 319 阅读 · 0 评论 -
Leetcode977:有序数组的平方
双指针实现有序数组的平方排序原创 2021-12-14 20:30:00 · 105 阅读 · 0 评论 -
Leetcode35:搜索插入位置
题目内容给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。[√ ] 请必须使用时间复杂度为 O(log n) 的算法。代码实现class Solution { public int searchInsert(int[] nums, int target) { if(nums == null) { throw new RuntimeException("illegal paramet原创 2021-12-14 07:00:00 · 254 阅读 · 0 评论 -
Leetcode278第一个错误的版本
题目内容你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。题目分析注意性质:当一个版本原创 2021-12-14 00:00:00 · 99 阅读 · 0 评论 -
LeetCode704:二分查找有序数组中是否包含目标值
题目内容给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。实现class Solution { public int search(int[] nums, int target) { if(nums == null || nums.length == 0) { throw new RuntimeException("illegal p原创 2021-12-13 21:30:00 · 614 阅读 · 0 评论 -
生兔子问题(递归算法)
作业一、有一对兔子,生长三个月后。开始生第一对兔子,并且以后每月生一对兔子,小兔子生长三个月后,也开始生兔子,问N个月后兔子的总数量 `package org.westos.homework;import java.util.Scanner;/** * 生兔子对数问题(使用递归算法) * 通过计算前几个月:1 2 3 4 5 6 7 … * 兔子总数 :1原创 2017-11-01 18:24:10 · 11420 阅读 · 1 评论 -
关于冒泡排序的优化
关于冒泡排序的优化最近在学习的过程中,发现有好多小伙伴在学习冒泡排序的过程中,对优化问题很是苦恼,因为之前本人在尚学堂老裴那里得到真经,所以给大家分享出来,希望可以帮助大家解决问题。代码如下:public static void Start(double[] arr) { for(int i=0;i<arr.length-1;i++) { boolean alread = t原创 2017-10-31 20:49:40 · 181 阅读 · 0 评论 -
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效(LeetCode原题.20)
package com.company.LeetCode;import java.util.Stack;/** * 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 * <p> * 有效字符串需满足: * <p> * 左括号必须用相同类型的右括号闭合。 * 左括号必须以正确的顺序闭合。 * <p&g...原创 2018-10-17 12:39:15 · 6611 阅读 · 0 评论 -
初识数据结构
一、数据结构的分类:1、线性数据结构:数组,栈,队列,列表,哈希表。2、树结构:二叉树,二分搜索树,AVL,红黑树,Treap,Splay,堆,Trie,线段树,K-D树,并查集,哈夫曼树3、图结构:邻接矩阵,邻接表 二、数据的逻辑结构指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括: 1、集合数据结构中的元...原创 2018-06-11 22:49:50 · 147 阅读 · 0 评论 -
二分法查找数组中的元素并返回其对应的索引
package org.westos.homework;/** * 现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1 */import java.util.Arrays;public class HomeWork02 { public static int search(int[] arr,int key) { Arrays.sort(arr);原创 2017-11-01 18:46:49 · 1696 阅读 · 0 评论 -
两数相加(链表)
0、说明:题目来自leetcode第二题,感兴趣的同学可到leetcode官网进行刷题练习1、题目描述:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。2、题解::将长度较短的链表在末尾补零使得两个连表长度相等,再一个一个元素对其相加(考虑进位)获取两个链表所对应的长度在较短的链表末尾补零对齐相加考虑进位原创 2021-07-09 00:09:06 · 266 阅读 · 1 评论 -
经典的“荷兰旗”问题
1、题目描述:(题目地址:LeetCode75 颜色分类):给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。2、解题思路和Java代码:这是一个经典的“荷兰旗”问题,由计算机科学家 Edsger W. Dijkstra 首先提出。欧洲很多国家的国旗都是三种颜色的不同分布、排列。方法一:单指针我们可以考虑对数组进行两次遍历。在第一次遍历中,我们将数原创 2021-06-28 01:11:33 · 168 阅读 · 1 评论