【[LeetCode][Java] Surrounded Regions】教程文章相关的互联网学习教程文章

LeetCode Top Interview Questions 387. First Unique Character in a String (Java版; Easy)【代码】

welcome to my blog LeetCode Top Interview Questions 387. First Unique Character in a String (Java版; Easy) 题目描述 Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.Examples:s = "leetcode" return 0.s = "loveleetcode", return 2. Note: You may assume the string contain only lowercase letters.第一次做;bit-map记录每个字符出现的次数, 位置...

Leetcode(Java)-342. 4的幂【图】

给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false进阶: 你能不使用循环或者递归来完成本题吗? 思路1:一般方法,除到无法整除再判断class Solution {public boolean isPowerOfFour(int num) {while(num > 0 && num % 4 == 0){num /=4;}return num == 1;} } 思路2:位运算class Solution {public boolean isPowerOfFour(int num) {return...

Leetcode刷题java之46. 全排列

回溯法框架参考这篇文章: https://blog.csdn.net/qq_41901915/article/details/104113330 执行结果: 通过 显示详情 执行用时 :2 ms, 在所有 Java 提交中击败了53.81% 的用户 内存消耗 :37.4 MB, 在所有 Java 提交中击败了52.98%的用户 题目: 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 来源:力扣(LeetCode) 链...

Leetcode刷题java之139. 单词拆分

执行结果: 通过 显示详情 执行用时 :5 ms, 在所有 Java 提交中击败了83.83% 的用户 内存消耗 :36.4 MB, 在所有 Java 提交中击败了35.99%的用户 题目: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输...

Leetcode 20题 有效的括号(Valid Parentheses) Java语言求解【图】

题目描述: 给定一个只包括 (,),{,},[,] 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 做法 使用栈来进行辅助求解。 1、创建一个空栈; 2、使用循环对字符串进行遍历转3,遍历完毕退出循环转7; 3、如果当前字符为(、{、[则进栈,转2; 4、如果当前字符为)、}、],转5; 5、如果栈为空,则返回false,匹配不成功...

Leetcode 206题 反转链表(Reverse Linked List)Java语言求解【图】

题目描述: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 迭代解法 /** Definition for singly-linked list. public class ListNode {int val;ListNode next;ListNode(int x) { val = x; } }*/ class Solution {public ListNode reverseList(ListNode head) {ListNode pre = null;ListNode next = null;while(head!=null){next = head.next;head.next = pre;pre = head;head = next;}return pre;}...

Leetcode 24题 两两交换链表中的节点(Swap Nodes in Pairs))Java语言求解【图】

题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4,你应该返回 2->1->4->3. 注意事项 1、不能简单的交换数值,而是需要更改指针,即确实更改了节点; 2、如果节点个数是奇数,如下图:那么第5个节点不用交换。只需变成如下图所示链表即可:但是再考虑节点个数的奇偶,逻辑会比较麻烦; 3、在交换的过程中指针的指向如...

Leetcode 141题 环形链表(Linked List Cycle) Java语言求解【图】

题目描述: 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 Map集合解法 思路: 创建一个map集合,key为节点,value为地址值,因为ListNode没有重写toString()方法,所以用toString()方法返回的内容作为value。 如果map中存在当前节点的toString()方法返回的内容,则存在环。 /*** Definition for singly...

Leetcode 142题 环形链表 II(Linked List Cycle II) Java语言求解【图】

题目描述: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 分析 给出示意图:对符号的一些说明:公式演算: 很容易得到: m=x+y(环的长度两种表示形式); 快指针走两步,慢指针走一步。所以快指针的速度是慢指针的速度的二倍,所以...

JAVA程序设计:优美的排列 II(LeetCode:667)

给定两个整数 n 和 k,你需要实现一个数组,这个数组包含从 1 到 n 的 n 个不同整数,同时满足以下条件: ① 如果这个数组是 [a1, a2, a3, ... , an] ,那么数组 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] 中应该有且仅有 k 个不同整数;. ② 如果存在多种答案,你只需实现并返回其中任意一种. 示例 1: 输入: n = 3, k = 1 输出: [1, 2, 3] 解释: [1, 2, 3] 包含 3 个范围在 1-3 的不同整数, 并且 [1, 1] 中有且仅有...

Leetcode(Java)-155. 最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2. ...

Leetcode(Java)-125. 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 思路:这是一道考察回文的题目,而且是最简单的形式,即判断一个字符串是否是回文。 针对这个问题,我们可以使用头尾双指针, 如果两个指针的元素不相同,则直接返回false, 如果两个指针...

LeetCode--493. 翻转对(java)【代码】

原题链接 方法1:暴力双循环(超时) class Solution {public int reversePairs(int[] nums) {if(nums == null || nums.length == 0) return 0;int count = 0;for(int i = 0;i < nums.length - 1;i++) {for(int j = i + 1;j < nums.length;j++) {//if(nums[i] > 2 * nums[j]) count++; 这种形式会有整型溢出的风险if(nums[i] - nums[j] > nums[j] ) count++;}}return count; } }方法2:归并排序 选自国际站的高票题解 //归并排序pu...

leetcode【高级】二 叉树中的最大路径和 java【代码】

题干 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3]1/ 2 3输出: 6示例 2: 输入: [-10,9,20,null,null,15,7]-10/ 9 20/ 15 7输出: 42想法 首先要注意的是 【路径】是不能重复同一个节点很多次的 因为路径是一个序列他不能重复 其次因为是二叉树 天然想到递归 对每一个节点而言 如...

LeetCode 精选 TOP 面试题(Java 实现)—— 从前序与中序遍历序列构造二叉树【代码】

文章目录一、题目描述1.1 题目1.2 知识点1.3 题目链接二、解题思路2.1 自研思路三、实现代码3.1 自研实现(Java)3.2 C++ 实现 一、题目描述 1.1 题目从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。注意: 你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ \9 20/ \15 71.2 知识点二叉树1.3 题目链接https://lee...