java
Luolimasi
这个作者很懒,什么都没留下…
展开
-
贪心算法总结
从问题的某一初始解出发: while (朝给定总目标前进一步){利用可行的决策,求出可行解的一个解元素。}由所有解元素组合成问题的一个可行解;原创 2021-08-17 21:35:10 · 167 阅读 · 0 评论 -
前缀和算法
前缀和算法含义:前缀和实际上就是对于长度为n的数组,我们新建立一个数组长度为n+1,第i个元素的值为前i个元素的和(包括第i个元素)。特点:1、前缀和数组比原数组多一个长度。2、前缀和的第0个元素的值为0。3、根据前缀和数组的特点,求前缀和时。我们只需要用第i个元素的值+第i-1个前缀个数组的值就可能得到第i个前缀和数组的值。(这也是一种动态规划的思想)。应用:前缀和算法可以解决一些在数组中与连续有关的问题。题目第一题和为K的子数组代码class Solution { public i原创 2021-08-16 02:08:20 · 336 阅读 · 0 评论 -
不同类型的动态规划问题简单区分
目前,就动态规划已经与到了很多类型的题目但现在最难理解的还是一下两个问题。零钱兑换2 这个问题就是让我们求满足所给整数的零钱组合。爬楼梯 但这个问题需要稍微做一下变式,我们能爬的阶数不仅仅局限于1和2了。给定我们一个非空数组,数组内的所有数字都是我们能够直接爬的阶数。。求能爬上顶点的方案这两个问题显然都能利用动态规划的思想去解决。其代码完成后的差别也仅在内外循环的先后顺序循环顺序的改变影响的是动态数组更新方式的不同。第一题代码class Solution { public int原创 2021-08-14 23:49:36 · 173 阅读 · 0 评论 -
三种有序查找方式
二分查找package 查找;public class Binarysearch { public static void main(String[] args) { int[] a=new int[]{2,5,6,8,67,58,46}; System.out.println(Binarysearch.search(a,58)); } public static int search(int a[],int key) { int low=0; int high=a.length原创 2021-08-09 21:26:13 · 440 阅读 · 0 评论 -
java创建邻接矩阵
遍历后面再加 ,目前先写下创建。package 图;import java.util.Scanner;public class Graph {//无向图 int edgenum,vexnum;//边数和点数 char[] vexs;//顶点表 int[][] arc;//邻接矩阵 public Graph(int vex,int edgenum) { this.vexs=new char[vex]; this.arc=new int[vex][vex]; } public v原创 2021-08-04 18:27:23 · 756 阅读 · 0 评论 -
数据结构队列的链式结构功能及实现
package 队列链式存储结构及功能实现;public class LinkedQueue { static class LinkedNode{ int data; LinkedNode next; public LinkedNode(int data) { this.data=data; } } LinkedNode front,rear; int size; public LinkedQueue() { front=null; rear=null; si原创 2021-07-30 17:31:35 · 95 阅读 · 0 评论 -
数据结构栈的链式结构代码及其部分功能实现
package 栈链式结构及功能实现;/*有了size 就能遍历整个链栈了。 * * */public class LinkedStack { static class LinkedNode{ int data; LinkedNode next; public LinkedNode(int data) { this.data=data; } } LinkedNode top;//指向栈顶,链栈的第一个节点 int size;//链栈长度 public Link原创 2021-07-29 17:42:05 · 106 阅读 · 0 评论 -
数据结构栈的顺序结构代码及其部分功能实现
package 栈顺序结构及功能实现;/*删除 插入只能在栈顶操作,需要个指针,每次操作检查下是不是空栈,然看再看看栈满没满*/public class Stack { int top;//栈顶指针 int[] stack=new int[50]; public Stack(){ top=-1;//初始化栈顶指针 } //进栈 public void push(int data){ if(top>=stack.length-1) { return ; } e原创 2021-07-29 16:36:05 · 99 阅读 · 0 评论 -
数据结构线性表之双向循环链表结构代码及其部分功能实现
package 线性表双向循环链表结构及其功能实现;/*优化了下 插入方法,选择的应该是第几个空位插入,双向循环链表,能够正逆两个方向显示数据*******/public class DoubleCircularLinkedList {class ListNode {int data;ListNode prev;//指向前驱ListNode next;//指向后继public ListNode(int data) {this.data = data;}} ListNode原创 2021-07-28 23:12:28 · 119 阅读 · 0 评论 -
数据结构线性表之循环链表结构代码及其部分功能实现
package 线性表循环链表结构及功能实现;/*链表基本功能已经实现,基本上基于单链表来实现的。循环链表的特殊性,让它在遍历时最后一个数据必须单独 * 显示。 * 既然方法名字叫做插入,那肯定是在两个数字之间,那头尾指针都不会因为插入操作而改变, * 所以链表的循环不会发生错误。 * 删除那里考虑的要全面一点。 * 其他的基本上就是单链表的内容了 * * * * * */public class CircularLinkedList { class ListNode原创 2021-07-28 20:31:16 · 119 阅读 · 0 评论 -
数据结构线性表之链式结构代码及其部分功能实现
单链表代码package 线性表单链表结构及功能实现;/*程序最大的好处 在于从链表类中创建了一个结点内部类,创建嵌套类的对象 不需要对象名 直接使用.next * * 程序仍可改进点:程序虽然存在头指针了,但我们仍可以申请一个空节点始终作为程序的第一个节点,这样能够 * 使得程序在插入 与 删除等操作时 第一节点 与其他节点操作保持一致。减少代码量。 * * */public class LinkedList {//补充链表更新数值的功能 static class ListNod原创 2021-07-27 19:19:13 · 137 阅读 · 0 评论 -
数据结构之线性表顺序结构及功能实现
代码实现package 线性表顺序结构及功能实现;import java.util.Scanner;public class List { public static void main(String args[]) { int[] a=new int[20];//数组长度 int length=10;//线性表长度(数据个数) Scanner sc=new Scanner(System.in); for(int i=0;i<length;i++) { System.out原创 2021-07-27 16:09:42 · 109 阅读 · 0 评论 -
三种排序方法
直接插入排序package 三种排序方法;public class 直接插入排序 { public static void main(String args[]) { int array[]= {7,8,45,231,234,23,98,11}; int temp; int j; for(int i=0;i<array.length-1;i++) { temp=array[i]; j=i-1; while(j>=0&&array[j]<temp)原创 2021-05-21 16:58:51 · 170 阅读 · 0 评论 -
java常见数组
public class 不等长数组 { public static void main(String args[]){ int a[][]=new int[9][]; int i; for(i=0;i<a.length;i++) a[i]=new int[i+1]; for(i=0;i<a.length;i++) { for(int j=0;j<a[i].length;j++) { System.out.print((i+1)*(j+1)+" "); }原创 2021-03-23 12:15:07 · 126 阅读 · 0 评论