常见算法归纳
文章平均质量分 54
刷提过程中算法总结归纳
Z丶北城大叔
既然选择了远方,便只顾风雨兼程...
展开
-
链表
一、单向链表1、链表的结点类public class Node { int val; // 表示数据域的值 Node next; // 表示指针域,指向下一个结点 // 构造方法,为数据域赋值 public Node(int val) { this.val = val; } // 链表结点的构造函数:使用数组arr作为参数,创建一个链表,当前的Node为链表的头结点 public Node(int[] arr) { if(arr == null ||原创 2021-04-25 21:04:10 · 98 阅读 · 0 评论 -
动态规划问题
一、求资产包中资产最大总价值1、问题描述输入:资产总条数,资产种类,资产A条数 资产B条数 资产C条数,资产A价值 资产B价值 资产C价值输出:资产包中资产最大总价值2、示例输入:12,3,4 5 7,500 600 800输出:14003、代码import java.util.Scanner;public class DynamicProgramming { public static void main(String[] args) { Scanner sc原创 2021-04-15 22:03:45 · 74 阅读 · 0 评论 -
背包问题
一、问题描述有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?下面讲述的例子均用具体的数字代入(例如:number=4,capacity=8):二、总体思路根据动态规划(dynamic programming)解题步骤:(1)问题抽象化(2)建立模型(3)寻找约束条件(4)判断是否满足最优性原理(5)找大问题与小问题的递推关系式(6)填表(7)寻找解组成最终找出最优解以及最优解的组成。三、动态规划原理“动态规划” 与 “分治法”原创 2021-04-14 22:06:04 · 99 阅读 · 0 评论 -
二分查找算法
二分查找算法又称折半查找,它是一种效率较高的查找方法。【要求】(1)必须采用顺序存储结构(2)必须按关键字大小有序排列【原理】将数组分为三部分,依次是中值( 即:数组中间位置的值 ),中值前,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。【实现】可以采用 递归、循环 两种方式一、【代码】/**二分查找算法【要求】对于已排好序的数组arr,需要查找的数原创 2021-04-14 18:17:26 · 95 阅读 · 0 评论 -
字符串的处理
一、长整数的和1、实现求两个超长非负数之和要求:(1)不损失精度(2)首位均不出现无意义得0(3)不出现无意义的小数点(如:1.00应该为1)(4)不得使用除字符操作外的函数public class LongIntegerSum{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String num1 = sc.nextLine(); String num2 = sc.nex原创 2021-04-13 14:20:27 · 77 阅读 · 0 评论