
数据结构算法
努力撸代码的小刑
全力以赴,追求卓越!
展开
-
寻求路径问题————动态规划的思想
刷题————寻找路径原创 2022-06-24 09:13:17 · 325 阅读 · 1 评论 -
动态规划学习笔记
动态规划的核心笔记原创 2022-03-29 15:40:17 · 406 阅读 · 0 评论 -
算法——寻找重复的数
案例分析: 给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 示例 2: 输入: [3,1,3,4,2] 输出: 3 说明: 不能更改原数组(假设数组是只读的)。 只能使用额外的 O(1) 的空间。 时间复杂度小于 O(n2) 。 数组中只有一个重复的数字,但它可能不止重复出现一次。 方法一:利用hash...原创 2022-03-22 11:43:59 · 2921 阅读 · 0 评论 -
算法数据结构——二分查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法,前提是数据结构必须先排好序,可以在对数时间复杂度内完成查找。 二分查找事实上采用的就是一种分治策略,它充分利用了元素间的次序关系,可在最坏的情况下用O(log n)完成搜索任务。 它的基本思想是:假设数组元素呈升序排列,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如果x>a[n/2],则我原创 2022-03-21 22:40:03 · 1033 阅读 · 0 评论 -
红黑树学习笔记
红黑树的学习记录原创 2022-03-11 11:42:08 · 636 阅读 · 0 评论 -
数据结构中的树、二叉树、先中后跟遍历,及其java实现
度:子节点的个数、 深度:从根节点到最底层节点的层数称之为深度,根节点在第一层 一般树: 任意一个节点的字节点的个数都不限制 二叉树: 任意一个子节点的个数最多两个,且节点的位置不可改变 分类: 二叉排序树 若它的左子树不空,则左子树的所有关键字均小于根关键字的值 若它的右子树不空,则右子树的所...原创 2022-03-09 14:54:51 · 163 阅读 · 0 评论 -
电路布线&&&图像压缩算法实现
/* @param实现关于电路布线问题 */ #include<iostream> #include<string> using namespace std; const int N=10; int max(int &a, int &b){ int c=a>b?a:b; return c; } void MNS(int c[], int n, int **size){ for(int j=0;j<c[1];j++){ .原创 2022-03-08 21:52:52 · 217 阅读 · 0 评论 -
java实现一个单链表,并实现链表的反转
/** * 实现单链表的反转功能 */ public class LinkedListTestReverse { public static void main(String[] args) { //设计一个单链表实现其单链表的增删操作 ListNodeS list = new ListNodeS(); list.addNode(3); list.addNode(4); list.addNode(5); .原创 2022-03-08 20:43:29 · 470 阅读 · 0 评论 -
用两个栈实现队列的基础操作(add,poll,peek)
解题思路: 明显是说用两个栈来实现队列的操作,我们知道,队列是先进先出的,而栈是先进后出的,因此我们在设计队列的时候,可以这样来做。一个栈是用来作压入栈stackPush,一个栈用来做弹出栈stackPop。数据压入栈的时候是先进后出的,只要把所有的数据压入到栈中,再将stackPush中的元素弹出压入到栈stackPop中即可,这样设计两个栈,刚刚好是把队列的先进先出的给实现啦,但是在操作的过程中还是有些许的注意: 1)stackPush中的元素压栈必须要全部一次压入到...原创 2021-11-25 18:31:54 · 629 阅读 · 0 评论 -
实现一个栈,实现栈的基本功能上,再实现返回栈中最小值的元素的操作
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; /** * 栈是Vector的一个子类,实现了一个标准的先进后出的 * 案例操作实例: * 实现一个栈,实现栈的基本功能上,再实现返回栈中最小值的元素的操作 */ public class TestStack { public static void mai.原创 2021-11-20 20:30:12 · 231 阅读 · 0 评论 -
笔试题目1-广联达编程关于小熊饼干的题目
package com.emiteam.study; import java.util.*; public class TestBinGan { public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList<Integer&g...原创 2021-09-01 21:49:55 · 572 阅读 · 0 评论 -
leetcode刷题
计算一个整数数组nums和一个目标值target,请在数组中找到和为目标值的那两个整数,并返回下标 解题思路: 1)使用蛮力法解决,利用两层循环进行求和 2)时间复杂度的分析:O(N*N) 其中N是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次 package com.emiteam.Algorithm; import java.util.Scanner; import java.util.*; /** *计算...原创 2021-07-06 22:46:06 · 75 阅读 · 0 评论 -
求最大子段和
关于动态规划算法实现的主要思想: 1、找出最优解的性质,刻画出结构特征 2、递归求出最优值 3、自顶向上的方式求出最优值 4、根据最优值得到的信息求出最优解 例题:给定n个数的序列,(a1,a2,...an)(可以为正可以为负),求出其中最大子序列的,若序列中全为负数,则输出为0 采用书本上的三种思想进行分而实现,1、蛮力法;2、分治法;3、动态规划法 /* 实现最大的子段和算法 */ #include<iostream> #i...原创 2020-11-22 12:40:07 · 170 阅读 · 0 评论 -
数据结构——排序算法(选择排序)
#include<iostream> #include<string> using namespace std; template<class T> void mySwap(T &a, T &b){ T temp=a; a=b; b=temp; } //利用选择排序进行计算 template<typename T> void mySort(T arr[], int len){ for(int i=0;..原创 2020-10-24 20:50:05 · 203 阅读 · 0 评论