Leetcode —「动态规划」系列题解
组合数之和 IV
Leetcode - 337 Combination Sum IV (Medium)
题目描述:从数组 nums 中选出和为 target 的数字组合,数字之间的顺序不同表示不同的组合。
nums = [1, 2, 3]
target = 4
The possible combination ways are:
(1, 1, 1, 1)
(1, 1, 2)
(1, ...
Leetcode —「树」系列题解
二叉树的遍历
先序遍历
Leetcode - 144 Binary Tree Preorder Traversal (Medium)
解法一:递归
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ansList = new ArrayList<Integer...
Leetcode —「搜索」系列题解
回溯
子集
Leetcode - 78 Subsets (Medium)
题目描述:给定一个不重复的整数数组,找出所有的子集。
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
public List<List<Intege...
Leetcode —「双指针」系列题解
有序数组的两数之和
Leetcode - 167 Two Sum II - Input array is sorted (Easy)
Input: nums = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
pu...
Leetcode —「数组」系列题解
多数元素
Leetcode - 169 Majority Element (Easy)
题目描述:找出数组中出现次数超过 ⌊ n/2 ⌋ 次的元素,假设这个元素一定存在。
Input: [3,2,3]
Output: 3
解题思路:利用了摩尔投票算法的思想,每次从序列里选择两个不相同的数字删除掉(抵消),最后剩下一个数字或几个相同的数字,就是出现次数大于总数一半的那个。
publ...
Java 函数式编程
一、概述
函数式编程是种编程范式。与之相对的是命令是编程,来做一下对比你就可以更好的理解函数式编程了。
比如要计算 (1 + 2) * 3 – 4 的结果。
命令式编程
为了体现命令式和函数式的区别,所以使用下面这种方法:
int a = 1 + 2;
int b = a * 3;
int c = b - 4;
函数式编程
subtract(multiply(add(1,2),...
算法 — 复杂度基础
一、什么是算法复杂度?
算法进行计算的时候,存储数据需要占用一定的 空间,执行计算需要耗费一定的时间 时间。算法复杂度就是在算法计算过程中对「空间」与「时间」的评价。
解决同一个问题,不同算法所有的空间和时间是不同的,这取决于算法是如何设计的。同样,同一个问题,规模不同时,同一个算法所用的空间和时间也不同。
例如:某排序算法为 100 个数排序和为 1000 个数排序。
所以,一个算...
共计 85 篇文章,11 页。