
算法
落花一叶知秋
这个作者很懒,什么都没留下…
展开
-
题目:二叉树的层次遍历。给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
1.题目:二叉树的层次遍历给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)2.解法/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre...原创 2019-11-30 18:40:28 · 1286 阅读 · 0 评论 -
题目: 二叉树的最大深度。给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
1.题目: 二叉树的最大深度。给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。2.解法/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode ...原创 2019-11-29 10:29:57 · 799 阅读 · 0 评论 -
题目:对称二叉树。给定一个二叉树,检查它是否是镜像对称的。
1.题目:对称二叉树。给定一个二叉树,检查它是否是镜像对称的。2.解法 0ms/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(...原创 2019-11-29 10:11:22 · 318 阅读 · 0 评论 -
题目:判断俩个树是否相同。 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
题目:判断俩个树是否相同。给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。2.解法 0ms/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode le...原创 2019-11-28 16:49:55 · 324 阅读 · 1 评论 -
题目:合并两个有序数组。 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
1.题目:合并两个有序数组。给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。2.解法 0ms public void merge(int[] nums1, int m, int[] nums2, int n) { int k=nums1.length-1; m--;n--; ...原创 2019-11-28 15:19:35 · 1244 阅读 · 0 评论 -
题目:删除排序链表中的重复元素。 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
题目:删除排序链表中的重复元素。 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。2.解法 1ms/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) {...原创 2019-11-27 20:07:23 · 890 阅读 · 0 评论 -
算法题目:爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
1.题目:爬楼梯假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。2.算法 0ms public int climbStairs(int n) { int numsMax=0;int num1=1;int num2=2; if(n==1...原创 2019-11-27 19:37:05 · 3737 阅读 · 0 评论 -
1.算法斐波那契数列0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ,递归实现(超简答)
1.斐波那契数列0, 1, 1, 2, 3, 5, 8,13, 21, 34, 55, 89, 144,实现算法 public int fibonaqi(int n) { //斐波那契数列 if(n==0){ return 0; } if(n==1){ ret...原创 2019-11-27 19:26:30 · 2647 阅读 · 0 评论 -
题目:x 的平方根
1.题目:x 的平方根实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。2.解法 2mspublic int mySqrt(int x) { //牛顿迭代法 long a=x; while(a*a>x){ ...原创 2019-11-27 18:55:11 · 189 阅读 · 0 评论 -
算法题目:二进制求和。 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。
算法题目:二进制求和。给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。2.解法 2ms public String addBinary(String a, String b) { int i=a.length()-1; int j=b.length()-1; int count...原创 2019-11-26 16:10:59 · 1002 阅读 · 1 评论 -
算法 题目:加一。给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开
题目:加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。2.解法 0ms public int[] plusOne(int[] digits) { for(int i=digits.length-1;i>=0;i-...原创 2019-11-25 20:02:50 · 513 阅读 · 0 评论 -
算法题目:最后一个单词的长度。给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。
算法题目:最后一个单词的长度。给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。2.解法 0ms public int lengthOfLastWord(String s) { if(s==null){ return 0; } ...原创 2019-11-25 19:35:47 · 650 阅读 · 0 评论 -
算法题目: 最大子序和
算法题目: 最大子序和给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。2.算法 1ms public int maxSubArray(int[] nums) { int res=nums[0] ; int sum=0; for(int num :nums){ ...原创 2019-11-25 19:06:53 · 178 阅读 · 0 评论 -
算法题目:报数。
算法题目:报数。报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:2.解法 4ms public String countAndSay(int n) { String r="1"; int k; for(int i=2;i<=n;i++){ k=1; StringBuilder...原创 2019-11-24 16:27:11 · 328 阅读 · 0 评论 -
算法题目:搜索插入位置。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。
算法题目:搜索插入位置。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。2.解法 0ms public int searchInsert(int[] nums, int target) { for(int i=0;i<nums.length...原创 2019-11-24 14:08:35 · 463 阅读 · 0 评论 -
题目:移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1)
1.移除元素给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。2.解法,用时(0ms) public int removeElement(int[] ...原创 2019-11-23 20:44:17 · 844 阅读 · 0 评论 -
题目: 删除排序数组中的重复项。
1.题目: 删除排序数组中的重复项。给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。2.解法public int removeDuplicates(int[] nums) { Stack<Integer&...原创 2019-11-23 09:51:28 · 179 阅读 · 0 评论 -
算法:合并两个有序链表 。将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
1.算法:合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。2.解法/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListN...原创 2019-11-22 19:06:05 · 463 阅读 · 0 评论 -
题目:有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序
1.题目给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。2.算法 public boolean isValid(String s) { Stack <Character> ...原创 2019-11-22 17:09:20 · 1923 阅读 · 0 评论 -
算法: 最长公共前缀 题目:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。
1.算法: 最长公共前缀 题目:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。2.解法 public String longestCommonPrefix(String[] strs) {if(strs.length==0){ return "";}int minstring=strs[0].length(...原创 2019-11-19 15:58:49 · 1625 阅读 · 0 评论 -
算法:罗马数字转整数
1.算法:罗马数字转整数罗马数字包含以下七种字符:I,V,X,L,C,D和M。例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,...原创 2019-11-18 19:55:50 · 405 阅读 · 0 评论 -
Java算法,题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
1.题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。2.解法class Solution { public boolean isPalindrome(int x) { if(x<0){ return false; } int them=x;...原创 2019-11-14 23:11:12 · 964 阅读 · 0 评论 -
算法:题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
算法:题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。2解法:class Solution { public int reverse(int x) { //用long来保存可以减少判断,算是取巧了 long rev=0; //无视正负,翻转数字 while(x!=0){ ...原创 2019-11-13 23:30:56 · 1578 阅读 · 0 评论 -
1. 两数之和,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。
1.题目描述给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。2.解法①暴力解法,遍历数组的所有元素,找到答案class Solution { public int[] twoSum(int[] nums, int...原创 2019-11-09 15:22:55 · 843 阅读 · 0 评论