leetcode
文章平均质量分 58
山风wind
晚起的鸟儿被虫吃
展开
-
最小栈不使用辅助栈的实现
最小栈不使用辅助栈的实现leetcode 155 整理设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。思路是栈内保存元素差值。class MinStack(object): def __init__(self): self.stack = [] self原创 2021-05-31 12:18:34 · 432 阅读 · 0 评论 -
深度优先与广度优先求解二叉树深度
深度优先与广度优先求解二叉树深度二叉树的深度为根节点到最远叶子节点的最长路径上的节点数二叉树的结构: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right原创 2021-05-16 21:01:43 · 221 阅读 · 0 评论 -
Java整数转罗马数字[leetcode 12]
整数转罗马数字题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX+ V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:原创 2021-05-14 18:56:11 · 1282 阅读 · 0 评论 -
Java反转链表
Java反转链表要求:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]对于链表的定义如下: Definition for singly-linked list. public class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; }原创 2021-05-14 11:08:16 · 2071 阅读 · 0 评论 -
字符串转换整数 (atoi)[leetcode 8]
class Solution { public int myAtoi(String s) { s = s.trim(); if(s.length()==0){ return 0; } int length = s.length(); int index = 0; int ans = 0; int sign = 1; if(s.charAt(index原创 2021-05-12 00:09:45 · 86 阅读 · 0 评论 -
给定一个非负整数 c ,判断是否存在两个整数 a 和 b,其平方和等于c
给定c,寻找满足a2+b2=ca^2+b^2=ca2+b2=c的a和b其中 0 <= c <= 231 - 1.输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5解题整理:1.暴力枚举对于给定的非负整数 c,需要判断是否存在整数 a 和 b,使得 a2+b2=ca^2+b^2=ca2+b2=c。可以枚举 a和 b 所有可能的情况。但是暴力枚举有一些情况是没有必要的。例如:当 c = 20时,当 a = 1 的时候,枚举 b的时候,只需要枚举到 b = 5就原创 2021-04-28 19:11:19 · 4669 阅读 · 0 评论 -
将二维矩阵顺时针旋转90°、旋转图像
将二维矩阵顺时针旋转90°、旋转图像要求:给定一个二维矩阵,将二维矩阵中的元素旋转90°。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]解题方法:找规律。1、使用辅助数组上图为矩阵原创 2021-04-26 10:20:09 · 1296 阅读 · 0 评论 -
判断一个 9x9 的数独是否有效的解题方法整理
判断一个 9x9 的数独是否有效的解题方法整理问题描述:(LeetCode 36)判断一个 9x9 的数独是否有效。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。只需要根据以上规则,验证已经填入的数字是否有效即可。如图所示:输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",原创 2021-04-21 00:35:23 · 2377 阅读 · 1 评论 -
用数组表示的整数+1
用数组表示的整数+1给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。解答:如果数组中的所有元素都是9,类似9999,加1之后肯定会变为10000,也就是数组长度会增加1位。如果数组的元素只要有一个不是9,加1之后直接返回即可。 public int[] plusOne(int[] digits) { int length = dig原创 2021-04-20 11:41:11 · 430 阅读 · 0 评论 -
字典树、前缀树、Trie树的简单实现[插入、搜索、寻找前缀]
字典树、前缀树、Trie树的简单实现[插入、搜索、寻找前缀]1.Trie树Trie树,即前缀树,又称单词查找树,字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。2.数据结构Trie 是一棵非典型的多叉树模型,即每个结点的分支数量可能为多个。其每个节点包含以下字段:指向子节点的指针数组next。对于小写英文单词而言,数组长度为 26,即小写原创 2021-04-16 18:09:16 · 244 阅读 · 0 评论 -
给定两个整形数组,求两数组元素的交集
给定两个整形数组,求两数组元素的交集题目描述:给定两个数组,编写一个函数来计算它们的交集。输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]输入:nums1 = [4,9,5,4,4,7,7], nums2 = [9,4,9,8,4,7]输出:[4,9,4,7]思路一:哈希表由于同一个数字在两个数组中都可能出现多次,因此需要用哈希表存储每个数字出现的次数。对于一个数字,其在交集中出转载 2021-04-13 22:00:59 · 523 阅读 · 0 评论 -
给定条件,找到数组中只出现一次的数字
给定条件,找到数组中只出现一次的数字要求:1.非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。2.算法具有线性时间复杂度。3.不使用额外的空间。输入:[1,1,3,4,4,5,5]输出:3输入:[2,2,1]输出:1- 方法一要求中除了一个数出现了一次,其他数字都出现了2次。便可以考虑使用异或运算的特点来解决。异或运算(^)是以二进制数据为基础进行运算的。当代码中使用到异或运算时,都会先将两个数据进行转换,转换成二进制数据后,再进行运算原创 2021-04-06 21:18:25 · 1000 阅读 · 0 评论 -
判断整数数组是否存在重复元素.
判断整数数组是否存在重复元素.题目:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,返回 true 。如果数组中每个元素都不相同,则返回 false 。1. 排序后检查在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。#Javapublic static boolean containsDuplicate(int[] nums) { //此处排序原创 2021-04-06 09:42:47 · 841 阅读 · 0 评论 -
旋转数组(将数组元素循环右移k次)
189.旋转数组(将数组元素循环右移k次)题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。1. 每次只将最后一个元素右移至数组头部位置,重复k%nums.length次即可。public void rotate(int[] nums, int k) { if(nums.length<2) return; for(int i=0;i<k;i++){ int target = nums[nums.length-1];原创 2021-04-01 21:49:30 · 1394 阅读 · 0 评论 -
搜索有序二维矩阵
搜索有序二维矩阵只要是对有序数组进行查找,首先一定想到二分查找。题目:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。题解:首先按列二分查找,然后按行进行二分查找。class Solution { public boolean searchMatrix(int[][] matrix, int target) { int colomn = searchC原创 2021-03-30 20:23:04 · 164 阅读 · 0 评论