
算法刷题
使用c,c++,java,python进行刷题,锻炼自己的编程思维和算法能力
景兄弟1366
王侯将相,宁有种乎!苍天弃吾,吾宁成魔!
展开
-
Java实现链表反转
public class ReverseList { public static class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public static ListNode reverseList(ListNode head) { if(head .原创 2021-03-31 23:56:28 · 126 阅读 · 0 评论 -
算法刷题之判断是否平衡二叉树
判断一棵树是否是平衡二叉树,不考虑排序性,只考虑平衡性,也就是二叉树的所有左子树和右子树的深度差不超过1。package tree;public class BalanceTree { public static boolean IsBalanced_Solution(TreeNode root) { int left = getTreeDeepth(root.left); int right = getTreeDeepth(root.right)原创 2020-08-16 19:39:05 · 336 阅读 · 0 评论 -
算法刷题之二叉树的镜像
采用递归的思想,将二叉树的左子节点和右子节点进行交换。package tree;public class TreeMirror { /** 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 */ class TreeNode原创 2020-08-16 11:01:09 · 314 阅读 · 0 评论 -
算法刷题之二叉树的深度
采用递归的思想,依次比较每个节点的左子树和右子树的深度,然后返回左右子节点的最大深度(+1是算上顶点的值)。package tree;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }public class TreeDeepth {原创 2020-08-16 09:49:14 · 231 阅读 · 0 评论 -
刷题之百钱买百鸡
/*题目描述公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?详细描述:接口说明原型:int GetResult(vector &list)输入参数:无输出参数(指针指向的内存区域保证有效):list 鸡翁、鸡母、鸡雏组合的列表返回值:-1 失败 0 成功 */import java.sql.Array;import java.util.ArrayList;impo.原创 2020-05-31 10:34:16 · 482 阅读 · 0 评论 -
JAVA获取基本类型的字节数大小
public class Main { public static void main(String[] args) { System.out.println("The size of short is "+Short.SIZE/8+" bytes."); System.out.println("The size of int is "+Integer.SIZE/8+" bytes."); System.out.println("The size o.原创 2020-05-27 22:17:43 · 2373 阅读 · 2 评论 -
景兄弟手撕算法之八皇后问题
package test1;/** * 回溯思想,八皇后问题:任意两个皇后都不能处于同一行、同一列或同一斜线上 */public class BackTest { //皇后数组 private int[] queen; public void backMethod(int n){ //皇后数组初始化 queen = new int[n]; //初始化皇后起点 for(int i=0;i<queen..原创 2020-05-26 22:56:45 · 141 阅读 · 0 评论 -
图的存储以及广度优先搜索算法和深度优先搜索算法
package graphi;import java.util.LinkedList;import java.util.Queue;/** * 采用邻接表的方式存储无向图 */public class UnGraphi { //标识图中的顶点个数 private int points; //邻接表 private LinkedList<Integer> [] adjacencyList; public UnGraphi(int poin.原创 2020-05-24 11:31:55 · 741 阅读 · 0 评论 -
景兄弟手撕算法之堆排序
堆,其实也是完全二叉树的一种,每一个根节点都大于它的节点叫大顶堆,每一个根节点都小于它的节点叫小顶堆。下面是基于大顶堆的堆排序实现:import java.util.Arrays;/** * 实现堆结构和操作 */public class Heap { //创建堆,创建一个存储对中的元素数组 private int[] data; //堆中存储数据量最大个数 private int size; //堆中以及存储元素的个数 private原创 2020-05-10 11:58:02 · 201 阅读 · 0 评论 -
景兄弟手撕算法之二叉查找树的实现
二叉查找树的定义:一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉查找树;(4)没有键值相等的结点。Java代码实现:package tree;/** * 定义二叉查找树的数据结构 【链表结构】 */public class...原创 2020-05-03 18:56:12 · 245 阅读 · 0 评论 -
景兄弟手撕算法之二分查找(不重复的序列)
package find;public class SimpleBinarySearch { /** * 数据元素不重复情况下的二分查找 * @param args */ public static void main(String[] args) { int arr[] = new int[]{11,8,3,9,7,1,2,5}...原创 2020-05-03 07:33:59 · 211 阅读 · 0 评论 -
景兄弟手撕算法之计数排序
package test1;import java.util.Arrays;public class CountSort { /** * 计数排序: */ public static void main(String[] args) { int arr[] = new int[]{11,8,3,9,7,1,2,5}; S...原创 2020-05-02 22:50:21 · 176 阅读 · 0 评论 -
景兄弟手撕算法之桶排序
package test1;import java.util.ArrayList;import java.util.List;public class BucketSort { /** * 核心思想是将要排序的数列到几个有序的桶里,每个桶里的数据再进行单独排序,排序完成后,再依次取出每个桶的数据,就是有序数列。 */ public static v...原创 2020-05-02 22:07:45 · 188 阅读 · 0 评论 -
景兄弟手撕算法之快速排序
package test1;import java.util.Arrays;public class QuickSort { /** * 快速排序,简称快排,利用的是分而治之的思想。 * 如果要对m->n之间的数列进行排序,我们选择m->nz之间的任意一个元素数据作为分区点, * 然后我们便利m->n之间的所有元素,将小于分区点...原创 2020-05-02 08:16:14 · 241 阅读 · 0 评论 -
景兄弟手撕算法之归并排序
我们先从数组中间分成前后两部分,然后对前后两部分分别排序,再将排序好的两部分合并。归并排序的性能比选择排序和冒泡排序以及插入排序的性能要更好。11,8,3,9,7,1,2,5算法代码:import java.util.Arrays;public class MergeSort { /** * 归并排序 * @param args */...原创 2020-05-01 12:11:03 · 221 阅读 · 0 评论 -
景兄弟手撕算法之选择排序
选择排序每次都要找到剩余未排序区间的最小值,与未排序区间的第一个值进行交换。(选择跑排序的效率不如插入排序和冒泡排序)算法解析过程:选择排序 = 已排序序列 + 未排序序列4 5 3 2 82 ----- 4 5 3 82 3 ---- 4 5 82 3 4 --- 5 82 3 4 5 ----82 3 4 5 8算法源码:...原创 2020-05-01 11:06:47 · 147 阅读 · 0 评论 -
景兄弟手撕算法之插入排序
插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表升序的插入排序:package test1;import java.util.Arrays;public class InsertSort { public static void main(String[] args) { int[] arr = new int...原创 2020-04-19 20:37:06 · 167 阅读 · 0 评论 -
景兄弟手撕算法系列之冒泡排序
从大到小排序:package test1;import java.util.Arrays;public class Test { /** * 冒泡排序 * @param args */ public static void main(String[] args) { int[] arr = new int[]{2,4,1,...原创 2020-04-19 19:50:38 · 259 阅读 · 0 评论