
算法随笔
open_the_windows
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
矩阵遍历-Java
对于矩阵,直观上可以想象的遍历方式按行、列,有些题目还有螺旋遍历,实际题目很多是需要BFS或者DFS的。技巧是结果空间遍历其实是4个方向的选择。这里简单记录一个比较典型的题目–矩阵中最长递增序列[leetcode-329]。原问题还有一点是考察任意点开始的最长路径,这里简化了下,毕竟只想研究BFS和DFS。其实在图的遍历过程中,辅助isVisited数组是很常用的,这里BFS没有使用isVisited数组是因为最大增序保证了不会往回走。而DFS的辅助数组是不是就是isVisited数组呢,起码起到了部分原创 2021-09-24 18:14:33 · 1017 阅读 · 0 评论 -
图的两种遍历-Java
图遍历基本就是广度有限和深度优先,基本思想和树遍历一致。需要注意的一点就是图的连通性,有时从图中一点出发并不能到达所有节点。import java.util.*;public class Graph { private static int [][] graph; private static int size; static int[] isVisited = new int[10]; public static void main(String[] args) {原创 2021-09-24 16:33:05 · 220 阅读 · 0 评论 -
快排-Java
快排中需要注意一点是,当选择最左边的值作为pivot时,向比较高位,j–。因为最后有次交换i位置,可能i直接就遍历到i==j。此时交换就产生了问题。public class quickSort { public static void main(String[] args) { int [] ints = new int[]{3,2,4,1,5,8,6,7,10,15,14,12,13}; quickSort(ints, 0, ints.length-1);原创 2021-09-23 16:28:05 · 167 阅读 · 0 评论 -
堆排序-Java
堆分为最大堆和最小堆,是对数组的完全二叉树的表示方式。import java.util.ArrayList;public class heapsort { static ArrayList<Integer> res = new ArrayList<>(); public static void main(String[] args) { int [] ints = new int[]{3,2,4,1,5,8,6,7,10,15,14,12,13}原创 2021-09-23 16:25:03 · 150 阅读 · 0 评论 -
排列算法模板-Java
记录比较通用排列模板,k表示待排长度,k==length为全排列import java.util.*;public class Permutation { public static void main(String[] args) { String[] ins = new String[]{"0", "1", "2"}; StringBuilder tmp = new StringBuilder(); permutation(ins, 2, t原创 2021-09-23 16:22:04 · 97 阅读 · 0 评论 -
二叉树遍历(Java)
前言参考:[1]优快云-Yadoer[2]jianshu-阿菜的博客代码二叉树数据结构以及基本操作如下,具体思路看参考。package com.company;import sun.reflect.generics.tree.Tree;import java.util.Arrays;import java.util.LinkedList;import java.util.Stack;/** * binary tree's structure is like this: *原创 2021-08-27 13:50:32 · 120 阅读 · 0 评论 -
组合算法-golang
记录一个很简洁的组合算法递归求解。func main(){ var res []int src := []int{1,2,3,4,5} combina(src, res, 0) fmt.Print(allres)}func combina(src []int, str []int, pos int) { if (pos == len(src)){ if len(str) != 0 { allres = append(allres, str) } return }原创 2021-04-15 15:45:29 · 161 阅读 · 0 评论 -
全排列-golang
在labuladong公众号看到一篇回溯法的模板,通过遍历决策树暴力递归。感觉比较简单直观,遂用golang试着写了一个全排列。func TestTrace(t *testing.T){ nums := []int{1,2,3,4,5} var list List traceBack(nums, list) fmt.Println(res)}var res [][]inttype List []intfunc (l *List) contains(x int)bool{ for _,原创 2021-04-13 10:07:08 · 367 阅读 · 0 评论