leecode编程
leecode算法编程题解析
有石为玉
个性化推荐,图像与视频处理,机器学习,深度学习
展开
-
【剑指offer(第2版)】-11/75-合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof题解:方法一:直接进行每原创 2021-11-27 16:55:01 · 1064 阅读 · 0 评论 -
【剑指offer(第2版)】-10/75-从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]题解:方法一:借助listclass Solution { //方法一:借助list public int[] reversePrint(ListNode head) { List<Integer> list = new ArrayList<>(); w原创 2021-11-25 09:49:43 · 674 阅读 · 0 评论 -
Coding日历
剑指 75剑指专项 119程序员 109hot100 100精选1 200精选2 145腾讯 50总计 798原创 2021-11-24 14:25:13 · 340 阅读 · 0 评论 -
【剑指offer(第2版)】-9/75-机器人的运动范围
题目:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:原创 2021-11-24 14:18:31 · 121 阅读 · 0 评论 -
【剑指offer(第2版)】-8/75-替换空格(string和char基础)
题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof基础:A 判断相等字符相等:==字符串相等:equalsB string和char的转换2.1 String转char1. 使用String.charAt.原创 2021-11-23 10:12:11 · 136 阅读 · 0 评论 -
【剑指offer(第2版)】-7/75-矩阵中的路径(DFS)
题目:给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S...原创 2021-11-22 10:42:57 · 136 阅读 · 0 评论 -
【剑指offer(第2版)】-6/75-二维数组中的查找(二维数组基础)
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]来源:力扣(L...原创 2021-11-19 11:03:36 · 752 阅读 · 0 评论 -
【剑指offer(第2版)】-5/75-旋转数组的最小数字(数组基础)
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-...原创 2021-11-18 10:45:15 · 101 阅读 · 0 评论 -
【剑指offer(第2版)】-4/75-数组中重复的数字(hashset/hashmap)
题目:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof题解:方法一.原创 2021-11-18 09:55:15 · 270 阅读 · 0 评论 -
【剑指offer(第2版)】-3/75-斐波那契数列II-青蛙跳台阶问题
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof题解:class Solution { public int numWays(int n) { .原创 2021-11-17 10:36:38 · 299 阅读 · 0 评论 -
【剑指offer(第2版)】-2/75-斐波那契数列I
题目:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。来源:力扣(LeetCode)链接:https://leetcode-...原创 2021-11-16 09:36:20 · 438 阅读 · 0 评论 -
【剑指offer(第2版)】-1/75-用两个栈实现队列
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof题解:/*方法一*/class CQueue { Stack<..原创 2021-11-15 10:31:38 · 108 阅读 · 0 评论 -
【14天高效制胜】-第3天-斐波那契数列
1、斐波那契数列/** * 509. 斐波那契数 * 斐波那契数,通常用F(n) 表示,形成的序列称为 斐波那契数列 。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: * * F(0) = 0,F(1)= 1 * F(n) = F(n - 1) + F(n - 2),其中 n > 1 * 给你 n ,请计算 F(n) 。 * */方法一:递归(耗时)//方法一:递归 public int fib1(int n) { ...原创 2021-09-24 15:20:59 · 144 阅读 · 0 评论 -
【14天高效制胜】-第2天-求和问题
目录1、三数之和方法一:暴力求解方法二:单层循环 + 双指针(二层循环)2、四数之和方法一:暴力求解方法二:双层循环+双指针(三层循环)1、三数之和方法一:暴力求解public List<List<Integer>> threeSum1(int[] nums) { //方法一:3层暴力循环,太耗时 int n = nums.length; List<Integer> arr;原创 2021-09-24 15:17:54 · 167 阅读 · 0 评论 -
【14天高效制胜】-第1天-求和问题
目录1、两数之和方法一:暴力求解方法二:hashmap方法三:方法二hashmap的优化方法四:排序后,用第二道题的双指针解法2、两数之和II——输入有序数组1、两数之和/** * 1. 两数之和 * 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 * 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 * 你可以按任意顺序返回答案。...原创 2021-09-24 15:06:24 · 263 阅读 · 0 评论 -
【14天算法入门】-第3天-双指针
1、移动零2、两数之和II——输入有序数组原创 2021-09-24 14:58:38 · 191 阅读 · 0 评论 -
【14天算法入门】-第2天-双指针
1、有序数组的平方/** *977. 有序数组的平方 *给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 * * */public class sortedSquares { public int[] sortedSquares(int[] nums) { //用双指针,能充分利用已有的序 int n=nums.length; int i=0; in..原创 2021-09-24 14:47:49 · 137 阅读 · 0 评论 -
【14天算法入门】-第1天-二分查找
/** * 704. 二分查找 *给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。 *输入: nums = [-1,0,3,5,9,12], target = 9 * 输出: 4 * 解释: 9 出现在 nums 中并且下标为 4 * */public class searchHalf { public int search(int[] nums, int t...原创 2021-09-24 11:08:05 · 177 阅读 · 0 评论