随笔分类 - 算法
摘要:描述请实现无重复数字的升序数组的二分查找 给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1 方法1: import java.util.*; public cl
阅读全文
摘要:描述实现函数 int sqrt(int x).计算并返回 x 的平方根(向下取整) 方法1:直接循环 import java.util.*; public class Solution { /** * * @param x int整型 * @return int整型 */ public int sq
阅读全文
摘要:描述给定数组 arr ,设长度为 n ,输出 arr 的最长上升子序列。(如果有多个答案,请输出其中 按数值(注:区别于按单个字符的ASCII码值)进行比较的 字典序最小的那个) 方法1:双层循环实现动态规划-超时 import java.util.*; public class Solution
阅读全文
摘要:1、描述给定一个长度为 n 的数组 arr,求它的最长严格上升子序列的长度。所谓子序列,指一个数组删掉一些数(也可以不删)之后,形成的新数组。例如 [1,5,3,7,3] 数组,其子序列有:[1,3,3]、[7] 等。但 [1,6]、[1,3,5] 则不是它的子序列。 2、介绍 最长递增子序列(lo
阅读全文
摘要:描述给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 答案: import java.util.*; /** * Definition f
阅读全文
摘要:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob
阅读全文
摘要:给你一个字符串 s,找到 s 中最长的回文子串。 https://leetcode-cn.com/problems/longest-palindromic-substring/ 最新解法:奇偶分别向两端扩展 public String longestPalindrome(String s) { in
阅读全文
摘要:描述对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。 方法1:奇数偶数分别从中心扩展 import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回
阅读全文
摘要:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 解答:while循环内部不满足也会继续走到结尾 import java.util.ArrayList; public class Solution { public ArrayList<Integer>
阅读全文
摘要:描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000) 答案:双指针 import java.util.*; public class Solution { /** * 反转字符串 * @param str string字符串 * @return strin
阅读全文
摘要:描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。 给定两个这种链表,请生成代表两个整数相加值的结果链表。 答案:栈 import java.util.*; /* * public class ListNode { * int val; * ListNode ne
阅读全文
摘要:描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 输入描述:输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和二个链表的公共部分
阅读全文
摘要:描述 给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空,则返回"-1"。目前给出的数据,仅仅会存在一个最长的公共子序列 方法1: import java.util.*; public class Solution { /** * longest common
阅读全文
摘要:描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串 题目保证str1和str2的最长公共子串存在且唯一。 方法1:dp数组存子串 import java.util.*; public class Solution { /** * longest common substring *
阅读全文
摘要:描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 注意:树的初始化 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public Tr
阅读全文
摘要:描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 思路:原生链表&头插法节点值 import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和
阅读全文
摘要:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 答案: import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution
阅读全文
摘要:1、栈 初始化:Stack<E> stack = new Stack<>(); 出栈:stack.pop() 或 stack.remove(stack.size() - 1) 入栈:stack.push(2) 或 stack.add(1) 栈顶:stack.peek() 2、队列 初始化:Queue
阅读全文
摘要:package com.jhliu20.real; import java.util.LinkedList; public class MyStack { private LinkedList linkedList; public MyStack() { linkedList = new Linke
阅读全文
摘要:描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 答案: /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ p
阅读全文