leetcode算法小题(2)】的更多相关文章

问题描述: 判断一个数是否为回文数 class Solution {      public boolean isPalindrome(int x) {           if(x<0)                  return false;           int rs=0; //注意:方法的参数传入进来之后要赋值给d //下面的方法中是对d操作,x的值没有变,方便最后结果与x进行比较           int d=x;           while(d!=0){       …
题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. package Simple;import java.util.Scanner;public class Practice2 { private int i = 1; // 默认为整数,即无符号 private String sign = ""; public static void main(String[] args) { Practice2 sol = new Practice2(); sol.…
题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 我的解答: package Simple;import java.util.Arrays;/*给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组…
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9104677.html LeetCode算法第19题(难度:中等) 题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点.(English:Given a linked list, remove the n-th node from the end of list and return its head.) 示例: 给定一个链表: 1->2->3->4->…
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9104582.html LeetCode算法第83题(难度:简单) 题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次.(English:Given a sorted linked list, delete all duplicates such that each element appear only once.) 示例 1: 输入: 1->1->2 输出: 1-&…
今天的题目不是leetcode上面的.只是觉得动态规划还是不算很熟练,就接着找了点DP的题练练 最长递增子序列的长度 题目的意思:传入一个数组,要求出它的最长递增子序列的长度.例如:如在序列1,-1,2,-3,4,-5,6,-7中,最长递增序列为1,2,4,6,所以长度为4. 分析:这道题我们可以用动态规划来做.对于数组的前i个元素,记L(i)为前i个最长递增子序列的长度.我们可以得到状态转移方程:L(i) = max(L(j))+1, 其中j<i, a[j]<a[i]. 这个解法比较容易想出…
今天开始刷Leetcode上面的算法题.我会更新我刷题过程中提交的代码(成功和不成功的都有)和比较好的解法 第二题 Add Two Numbers 题目的意思:输入两个链表,这两个链表都是倒序的数字,相加后返回倒序的链表.比如: Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 (342 + 465 = 807) 我的解法: 思路很简单,把两个链表分别转换成数字,相加后把结果再转换成链表 # Definit…
又到了晚上,动态规划,开刷! 第121题 Best Time to Buy and Sell Stock 题目的意思:给予一个数组price,表示特定股票在某天的股价,里面第i个数表示第i天的价格.只能交易一次(买一次+卖一次),求最大利润 分析:典型的动态规划.当我们要求到第i天为止最大的利润,就需要知道i-1天为止的最大利润,然后用第i天的股价减去(i-1)天股票最低值,然后比较即可.所以我们可以推出状态转移方程: maxProfit(i) = max(maxProfit(i-1), pri…
今天在刷了几道简单的动态规划后,又看了看string方面的题 第五题 Longest Palindromic Substring 题目的意思:求一个字符串的最长回文子串 分析:开始,我的想法是,现在字符串中插入特殊字符,比如'$',这样可以规避回 文串长度为奇数或偶数的讨论问题,加入特殊字符后,长度始终为奇数.然后建立一个数组,该数组记录了以每一位为中心的回文字符串的长度.解法很简单: def findmin(s): s_ = '~' + '~'.join(s) + '~' st = '' p…
上次刷了五六道题,都是关于string处理的,这次想换个知识点刷一下,然后再回头刷string的题,当做复习.. 这几天主要会选择动态规划的题目,因为以前从没刷过这方面的东西,很多东西都不是很懂..就当重新学习吧~ 第198题 House Robber 题目的意思:一个抢劫者要抢劫一条街上的住户,由于每家都有报警器,连续抢劫2家就会触发报警器.现在给你一个列表,里面的元素是每家可抢劫的金额,要求在不触发报警器的情况下抢劫最多的钱 分析:这是一道典型的动态规划题,我们先分析一下. 对于每一家,抢劫…
从题目名字就可以看出这两道题是相似的,219是217的加强版 217:Contains Duplicate 题目 给予一个数组,判断是否有重复的元素.如果有就返回True,没有就返回False.以下是我第一次想到的方法 解题思路 遍历这个数组,建立一个字典,存储每个不同的数字的出现次数.如果某个元素的出现次数大于1,则表示有重复 class Solution: # @param {integer[]} nums # @return {boolean} def containsDuplicate(…
Same Tree 题目 给予两棵二叉树,判断这两棵树是否相等(即各节点的值都一样) 解题思路 分别遍历两棵二叉树,并用列表分别存储这两棵树的节点的值,比较这两个列表就可以了 class Solution: # @param {TreeNode} p # @param {TreeNode} q # @return {boolean} def isSameTree(self, p, q): if (not p) and (not q): return True if (not p) and q:…
Longest Common Prefix 题目 给予一个列表,元素为字符串,写一个程序找出最长公共前缀 解题思路 先比较两个字符串,如果第一个字符不一样,则返回空值,比较完成后,用这个公共字符串和下一个元素继续比较,以此类推 class Solution: # @param {string[]} strs # @return {string} def longestCommonPrefix(self, strs): if not strs: return '' if len(strs) ==…
Path Sum 题目 给予一个二叉树,和一个值su,寻找是否有一个从根节点到叶节点的和为su,有则返回True,没有为False.比如: 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 hasPathSum(self, root, 22) 将返回True 节点为: class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None 解题思路 class Soluti…
下面题目是LeetCode算法155题: https://leetcode.com/problems/min-stack/ 题目1:最小函数min()栈 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. getMin() -- 检索栈中的最小元素. package com.good.good.study.stack; import java.uti…
这是悦乐书的第307次更新,第327篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第176题(顺位题号是746).在楼梯上,第i步有一些非负成本成本[i]分配(0索引).一旦支付了费用,您可以爬一到两步.您需要找到到达楼层顶部的最低成本,您可以从索引为0的步骤开始,也可以从索引为1的步骤开始.例如: 输入:cost= [10,15,20] 输出:15 说明:最便宜的是从成本[1]开始,支付该成本并返回顶部. 输入:cost= [1,100,1,1,1,100,1,1…
这是悦乐书的第303次更新,第322篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第171题(顺位题号是720).给出表示英语词典的字符串单词数组,找到单词中长度最长的单词,此单词可以通过数组中的其他单词一次次构建一个字符而得来.如果有多个可能的答案,则返回字典顺序最小的最长单词.如果没有答案,则返回空字符串.例如: 输入:words = ["w","wo","wor","worl","…
这是悦乐书的第299次更新,第318篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第167题(顺位题号是706).在不使用任何内置哈希表库的情况下设计HashMap.具体而言,你的设计应包括以下功能: put(key,value):将一个(key,value)对插入HashMap.如果该值已存在于HashMap中,请更新该值. get(key):返回指定键映射到的值,如果此映射不包含键的映射,则返回-1. remove(key):如果此映射包含键的映射,则删除值键的…
这是悦乐书的第294次更新,第312篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第162题(顺位题号是697).给定一个由正整数组成的非空数组,该数组的度数被定义为任意元素出现次数最多的次数.你的任务是找到一个(连续的)nums子数组的最小可能长度,它与nums具有相同的度数.例如: 输入:[1,2,2,3,1] 输出:2 说明:输入数组的度数为2,因为元素1和2都出现两次.在具有相同程度的子阵列中:[1,2,2,3,1],[1,2,2,3],[2,2,3,1],…
这是悦乐书的第293次更新,第311篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第161题(顺位题号是696).给定一个字符串s,计算具有相同数字0和1的非空且连续子串的数量,并且这些子串中的所有0和所有1都是连续的.重复出现的子串也计算在内.例如: 输入:"00110011" 输出:6 说明:有6个子串具有相同数量的连续1和0:"0011","01","1100","10"…
这是悦乐书的第285次更新,第302篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第153题(顺位题号是671).给定非空的特殊二叉树,其由具有非负值的节点组成,其中该树中的每个节点具有恰好两个或零个子节点. 如果节点具有两个子节点,则该节点的值是其两个子节点中的较小值.给定这样的二叉树,您需要输出由整个树中所有节点的值组成的集合中的第二个最小值.如果不存在这样的第二个最小值,则输出-1.例如: 2 / \ 2 5 / \ 5 7 输出:5 2 / \ 2 2 输出…
这是悦乐书的第284次更新,第301篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第152题(顺位题号是669).给定二叉搜索树以及L和R的最低和最高边界,修剪树以使其所有元素位于[L,R](R> = L).可能需要更改树的根,因此结果应返回修剪后的二叉搜索树的新根.例如: 输入:L = 1 R = 2 1 / \ 0 2 输出: 1 \ 2 输入:L = 1 R = 3 3 / \ 0 4 \ 2 / 1 输出: 3 / 2 / 1 本次解题使用的开发工具是ecl…
这是悦乐书的第283次更新,第300篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第151题(顺位题号是665).给定一个包含n个整数的数组,您的任务是通过修改最多1个元素来检查它是否可以变为非递减.如果array [i] <= array [i + 1],且0 <= i <n,则我们定义一个数组是非递减的.例如: 输入:[4,2,3] 输出:true 说明:可以修改4为1或2以获得非递减数组. 输入:[4,2,1] 输出:false 说明:通过最多修改一个…
这是悦乐书的第270次更新,第284篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第136题(顺位题号是594).我们定义一个和谐数组是一个数组,其最大值和最小值之间的差值恰好为1.给定一个整数数组,在其所有可能的子序列中找到其最长的和谐子序列的长度.例如: 输入:[1,3,2,2,5,2,3,7] 输出:5 说明:最长的和谐子序列是[3,2,2,2,3]. 注意:输入数组的长度不会超过20,000. 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8…
这是悦乐书的第267次更新,第281篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第134题(顺位题号是581).给定一个整数数组,找到一个连续的子数组,按升序对该子数组进行排序,使得整个数组也按升序排序.找到最短的无序连续子数组并输出其长度.例如: 输入:[2,6,4,8,10,9,15] 输出:5 说明:按升序对[6,4,8,10,9]子数组进行排序,以使整个数组按升序排序. 注意: 数组的长度在[1,100]范围内. 数组可能包含重复项,因此这里的升序表示<=…
这是悦乐书的第264次更新,第277篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第131题(顺位题号是566).在MATLAB中,有一个非常有用的函数叫做'reshape',它可以将矩阵重新整形为一个不同大小的矩阵,但保留其原始数据.您将获得一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示所需重新整形矩阵的行号和列号.重新形成的矩阵需要以相同的行遍历顺序填充原始矩阵的所有元素.如果具有给定参数的"重塑"操作是可能且合法的,则输出新的重新整形矩阵;…
这是悦乐书的第262次更新,第275篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第129题(顺位题号是561).给定一个2n个整数的数组,你的任务是将这些整数分组为n对整数,比如说(a1,b1),(a2,b2),...,(an,bn),找出每对(ai, bi)中最小值,然后相加,使得其和最大.例如: 输入:[1,4,3,2] 输出:4 说明:n为2,对的最大总和为4 = min(1,2)+ min(3,4). 注意: n是正整数,其范围为[1,10000]. 数组…
这是悦乐书的第254次更新,第267篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第121题(顺位题号是532).给定一个整数数组和一个整数k,您需要找到数组中唯一的k-diff对的数量. 这里k-diff对被定义为整数对(i,j),其中i和j都是数组中的数字,它们的绝对差是k.例如: 输入:[3,1,4,1,5],k = 2 输出:2 说明:数组中有两个2-diff对,(1,3)和(3,5).虽然我们在输入中有两个1,但我们应该只返回唯一对的数量. 输入:[1,2…
这是悦乐书的第243次更新,第256篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第110题(顺位题号是492).对于Web开发人员,了解如何设计网页的大小非常重要.因此,给定一个特定的矩形网页区域,您现在的工作是设计一个矩形网页,其长度L和宽度W满足以下要求: 1.您设计的矩形网页区域必须等于给定的目标区域. 2.宽度W不应大于长度L,这意味着L> = W. 3.长度L和宽度W之间的差异应尽可能小. 您需要按顺序输出您设计的网页的长度L和宽度W. 例: 输入:4…
这是悦乐书的第238次更新,第251篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第105题(顺位题号是463).您将获得一个二维整数网格形式的地图,其中1代表土地,0代表水.网格单元水平/垂直(不是对角线)连接. 网格完全被水包围,并且恰好有一个岛(即,一个或多个连接的陆地小区). 岛上没有"湖泊"(里面的水与岛周围的水没有联系). 一个单元格是边长为1的正方形.网格为矩形,宽度和高度不超过100.确定岛的周长. 输入:[[0,1,0,0],[1,1,1…