基础算法用golang实现(部分用C++)

发布时间:2022-12-03 开发语言 基础算法 算法 GOLANG

1. 快速排序
分治思想
quicksort(A []int, _start, _end int)
双向指针分别开工,右边(从_end开始)找到比(base指针)baseValue大的值,覆盖左边,然后左边(从_start开始)找到比baseValue大的值,覆盖右边,左右指针重合时,本轮结束,basevalue放在左右指针重合处
分治用递归实现
base指针左边都比baseValue小,因此左边再次排序 quicksort(A,_start,start-1)
base指针左边都比baseValue大,因此右边再次排序 quicksort(A,end+1,_end)
(start = end)

package main
import (
	"fmt"
)
func main() {
	fmt.Println("testing...")
	var array = []int{9, 5, 6, 8, 4, 8, 6, 1, 10}
	quicksort(array, 0, len(array)-1)
	fmt.Println(array)
}
func quicksort(A []int, _start, _end int) {
	if _start >= _end {
		return
	}
	start, end := _start, _end
	baseValue := A[start]
	for start < end {
		for A[end] >= baseValue && end > start {
			end--
		}
		A[start] = A[end]
		for A[start] <= baseValue && end > start {
			start++
		}
		A[end] = A[start]
	}
	A[start] = baseValue
	quicksort(A, _start, start-1)
	quicksort(A, end+1, _end)
}

2. 二叉树
在这里插入图片描述

//定义节点(go)
type ListNode struct {
	Val int
	Left *ListNode
	Right * ListNode
}
//定义节点(cpp)
struct TreeNode {
      int val;
      TreeNode *left;
      TreeNode *right;
      TreeNode() : val(0), left(nullptr), right(nullptr) {}
      TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
      TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };

main函数

func main() {
	BT := new(ListNode)
	CreatBinTree_PreOrder(BT)
	fmt.Println("Create finished...")
	preOrder(BT)
	fmt.Println()
	inOrder(BT)
	fmt.Println()
	postOrder(BT)
	fmt.Println()
}

递归先序创建二叉树
golang new(LinkNode)时,Left和Right是nil,必须给其赋地址

*BT = ListNode{val, new(ListNode), new(ListNode)}

指针操作:传递地址path参数,就不能让形参再次被赋予一个地址,只能利用传递的地址 *path 来赋值,否则传递不了

递归先序创建二叉树

func CreatBinTree_PreOrder(BT *ListNode) { //先序创建二叉树
	var val int
	fmt.Scanf("%d", &val)
	if val == 0 { //遇到-1停止
		BT = nil
		return
	} else {
		*BT = ListNode{val, new(ListNode), new(ListNode)} // !!!
		CreatBinTree_PreOrder(BT.Left)  //左
		CreatBinTree_PreOrder(BT.Right) //右
	}
}

visit输出

func visit(node *ListNode) {
	if node.Val != 0 {
		fmt.Print(node.Val, " ")
	}
}
  1. 先序递归遍历
func preOrder(BT *ListNode) {
	if BT == nil {
		return
	}
	visit(BT)
	preOrder(BT.Left)
	preOrder(BT.Right)
}

迭代先序遍历二叉树(cpp)
golang中没有现成的栈,迭代遍历用C++实现
先序:中左右
中入栈->中出栈->右入栈(放栈底)->左入栈(成为中)
上述操作迭代遍历,直至遍历完成

class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        stack<TreeNode *> st;
        vector<int> result;
        if (root == NULL) return result;
        st.push(root);
        while(!st.empty()) {
            TreeNode * node = st.top();
            result.push_back(node->val);
            st.pop();
            if (node->right) st.push(node->right);
            if (node->left) st.push(node->left);
        }
        return result;
    }
};
  1. 中序递归遍历
func inOrder(BT *ListNode) {
	if BT == nil {
		return
	}
	inOrder(BT.Left)
	visit(BT)
	inOrder(BT.Right)
}

迭代中序遍历二叉树(cpp)
看作遵守中序遍历准则,一直左,存入栈,遇到空时,则弹出栈顶元素,将val存入结果数组,然后往右走一格,重复上述步骤

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        stack<TreeNode *> st;
        vector<int> ans;
        TreeNode * cur = root;
        while(cur != NULL || !st.empty()){
            if (cur != NULL){
                st.push(cur);
                cur = cur->left;
            } else {
                TreeNode * node = st.top();
                ans.push_back(node->val);
                st.pop();
                cur = node->right;
            }
        }
        return ans;
    }
};
  1. 后序递归遍历
func postOrder(BT *ListNode) {
	if BT == nil {
		return
	}
	postOrder(BT.Left)
	postOrder(BT.Right)
	visit(BT)
}

迭代后序遍历二叉树(cpp)
后序:左右中 = (逆序)中左右
仿照先序改入栈顺序就行

class Solution {
public:
    //左右中 = (逆序)中右左
    vector<int> postorderTraversal(TreeNode* root) {
        stack<TreeNode *> st;
        vector<int> ans;
        if (root == NULL) return ans;
        st.push(root);
        while(!st.empty()){
            TreeNode* node = st.top();
            ans.push_back(node->val);
            st.pop();
            if (node->left) st.push(node->left);
            if (node->right) st.push(node->right);
        }
        reverse(ans.begin(),ans.end());
        return ans;
    }
};

更多相关推荐


武汉理工新生赛A: 模拟 转向次数

发布时间:2022-11-20 C++ 数据结构 算法
登录—专业IT笔试面试备考平台_牛客网转向的次数由因素决定:1.初始点具有方向,但不算一次转向2.前一次与本次的方向不一致算一次转向题目要求:1.每个位置的导向板只会使用一次,使用一次后需要消失此位置的导向板2.没有导向板的位置,前进时和前一次的方向一致注意:1.记录前一次的方向2.离开边界的时候结束模拟3.代码顺序:先记录此点走过,再前进(变化人的坐标)constintN=110;chara[N...

Leetcode628:三个数的最大乘积

发布时间:2022-11-23 LEETCODE 算法
原文链接:628.三个数的最大乘积-力扣(LeetCode)题目        给你一个整型数组nums,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例1:输入:nums=[1,2,3]输出:6示例2:输入:nums=[1,2,3,4]输出:24示例3:输入:nums=[-1,-2,-3]输出:-6提示:3&lt;=nums.length&lt;= 104-1000&lt;=nums[i...

高精乘模板,他来了

发布时间:2022-08-16 C++ 算法 我的总结
#include&lt;bits/stdc++.h&gt;usingnamespacestd;constintN=4005;inta[N],b[N],c[N];charad[N],bd[N];intlena,lenb,lenc;intmain(){   memset(a,0,sizeof(a)); //全部设成0     memset(b,0,sizeof(b));   memset(c,0,si...

【NOIP 2010 普及组】接水问题

发布时间:2022-10-15 CSP试题 算法 CSP C++
描述学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。现在有n名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n编号,i号同学的接水量为wi。接水开始时,1到m号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学j完成其接水量要求wj后,下一名排队等候接水的同学k马上接替j同学的位置开始接水。这个换人的过程是瞬间完成的,且没有...

Binary Tree Maximum Path Sum --- LeetCode

发布时间:2015-01-21 LEETCODE JAVA 算法 ALGORITHM
Givenabinarytree,findthemaximumpathsum.Thepathmaystartandendatanynodeinthetree.Forexample:Giventhebelowbinarytree,1/\23Return 6.解题思路: 题目要求:找出一棵二叉树上的一条路径,该路径上的节点值和为最大,输出这个最大值。        解题思路:遍历二叉树,从下到上递归计...

Clone Graph --- LeetCode

发布时间:2015-01-23 LEETCODE JAVA 算法 ALGORITHM
Cloneanundirectedgraph.Eachnodeinthegraphcontainsa label andalistofits neighbors.OJ'sundirectedgraphserialization:Nodesarelabeleduniquely.Weuse # asaseparatorforeachnode,and , asaseparatorfornodelabel...

Leetcode|Candy

发布时间:2015-07-03 LEETCODE 算法
ThereareNchildrenstandinginaline.Eachchildisassignedaratingvalue.Youaregivingcandiestothesechildrensubjectedtothefollowingrequirements:Eachchildmusthaveatleastonecandy.Childrenwithahigherratinggetmore...

【20221020】【每日一题】用栈实现队列

使用栈实现队列的下列操作:push(x)--将一个元素放入队列的尾部。pop()--从队列首部移除元素。peek()--返回队列首部的元素。empty()--返回队列是否为空。思路:用两个栈实现队列功能,一个进一个出。这里peek可以直接调用成员函数popclassMyQueue{public:stack&lt;int&gt;Instack;stack&lt;int&gt;Outstack;MyQ...

【洛谷】每日一题-P5713 【深基3.例5】洛谷团队系统

发布时间:2022-10-28 C++ 洛谷-每日一题 开发语言 算法
目录题目描述解析 ACCode!原题链接:戳~先看题:题目描述在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间 5 分钟;而在洛谷团队中上传私有题目,每题只需要花费 3 分钟,但是上传题目之前还需要一次性花费11分钟创建与配置团队。现在要配置 n 道题目,如果本地配置花费的总时间短,请输出 Local,否则输出 Luogu。输入格式输入一个正整数...

习题10-6 递归求Fabonacci数列 (10分)

作者:Cyouagain,从事软件开发努力在IT搬砖路上的技术小白公众号:【Cyouagain】,分享计算机类毕业设计源码、IT技术文章、游戏源码、网页模板、程序人生等等。公众号回复【粉丝】进博主技术群,与大佬交流,领取干货学习资料关于转载:欢迎转载博主文章,转载时表明出处求赞环节:创作不易,记得点赞+评论+转发谢谢你一路支持快速找到所需题目:浙大版c语言程序设计第三版题目集一览表微信搜索公众号【...

算法基础课-动态规划

发布时间:2022-11-19 算法 动态规划 ACWING算法课笔记
动态规划闫式dp法状态表示:dp(i,j,k,… )dp(i,j,k,\dots)dp(i,j,k,…)变量组(i,j,k,… )(i,j,k,\dots)(i,j,k,…)表示的是什么集合dp函数dp(i,j,k...)dp(i,j,k...)dp(i,j,k...)表示的是该集合的什么属性,即整个映射关系是集合S⟶(i,j,k...)⟶R集合S\longrightarrow(i,j,k...)...

790.多米诺和托米诺平铺

发布时间:2022-11-12 C++ 算法 21天打卡
constlonglongmod=1e9+7;classSolution{public:intnumTilings(intn){vector&lt;vector&lt;longlong&gt;&gt;dp(n+1,vector&lt;longlong&gt;(4));dp[0][3]=1;for(inti=1;i&lt;=n;i++){dp[i][0]=dp[i-1][3];dp[i][1]=(d...

一些洛谷题单里的题目

发布时间:2022-11-23 算法题目 算法
1.洛谷-P1012拼数这个题吧,一开始想的是用转字符串排序,但是注意两个数字42和426,另一组数是42和421,他们经过字符串排序之后的结果都是一样的426在42前面没啥说的,但是421不能在42前头,然后就换个思路被,可以这样做:sort(dp.begin(),dp.begin()+n,[](string&amp;a1,string&amp;a2){ return(a1+a2)&gt;(a...

C#【必备技能篇】Winform中,如何去掉Button按钮的边框线(或更改边框颜色)

方法一:【更改按钮相关属性——简单】设置FlatStyle为Flat设置FlatAppearance下的BorderSize为0方法二:【重写按钮的OnPaint事件——复杂】1、源码【新建一个.cs文件,内容如下】:usingSystem.Drawing;usingSystem.Windows.Forms;namespaceWindowsFormsApp1{publicclassnewbtn:S...

数字信号处理信号抽样与插值MATLAB实现——实例

因为之前MATLAB没有好好学,而且DSP也没有好好学,做起作业来十分困难,为了好好写作业,我又重新研究了DSP和MATLAB,学了一下信号的抽样和插值先看一看x(n)原本的图像代码如下%定义基本参数f=1;%原信号频率fs=16;%抽样信号频率N=52;%采样点数n=0:N-1;%画原序列图像xn=cos(2*pi*n*(f/fs));stem(n,xn)title('原x(n)图像')xlab...

熊猫代理自动签到

发布时间:2022-09-04 前端 开发语言 PYTHON
熊猫代理自动签到官方链接:http://www.xiongmaodaili.com/可以签到获取积分来免费兑换东西importrequests#需要一次成功不然后续需要验证码account="1311111111111"#手机号mima="1123123"#密码session=requests.session()headers={'User-Agent':'Mozilla/5.0(WindowsN...

Python类和对象(在学过其他语言类和对象的基础上)

发布时间:2022-11-09 开发语言 PYTHON
1.Python类的定义语法class类名:属性1属性2......方法1方法2......①属性就是在类中进行定义的变量;②方法就是在类中进行定义的函数;③Python中的类名最好用大写字母开头(和函数进行区分)2.Python类中的方法Python类中的每一个方法的第一个参数都是self,相当于C++中的this指针。3.Python中类的继承3.1.类的继承语法①Python中使用以下语法进...

编程题:帅到没朋友

发布时间:2022-11-17 算法 开发语言 C语言
题目描述当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。输入格式输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤**...

代码随想录算法训练营day4

发布时间:2022-11-23 链表 算法 LEETCODE
代码随想录算法训练营day4接着链表。24.两两交换链表中的节点leetcode24SwapNodesinPairsclassSolution{public:ListNode*swapPairs(ListNode*head){ListNode*dummyhead=newListNode(0);dummyhead-&gt;next=head;ListNode*cur=dummyhead;while(...

西门子1200博途程序与威纶触摸屏画面实例 西门子1200与4台MS300变频器modbus485轮询读写参数

发布时间:2022-11-01 算法
西门子1200博途程序与威纶触摸屏画面实例,博图版本V15及以上,内容涉及上位机通讯,modbus485,伺服等。具体有:1,西门子1200控制4台步进电机;2,西门子1200与4台MS300变频器modbus485轮询读写参数;3,西门子1200与上位机TCP/IP通讯控制相机拍照,反馈数据;4,设备为多工位联动控制。ID:3710673211276480汇科自控...

【数据结构与算法】图的基本结构介绍 | 邻接表与邻接矩阵编码实战

发布时间:2022-11-18 数据结构 算法 数据结构与算法
🚀作者:“大数据小禅”🚀文章简介:本篇文章对基本数据结构图进行了一个概述,并使用领接矩阵与邻接表的方式来实现一个图🚀个人主页:大数据小禅图的应用图是一种数据结构,图的应用比较广泛深度优先遍历(DFS)广度优先遍历(BFS)最小生成树KruskalRrim最短路径DijkstraFlouedBellman-Ford图是一种数据结构,一个图就是一些节点的集合,这一些节点通过边来连接。是一种多对多的数据...

剑指Offer(Python)—— 从尾到头打印链表(简单)

发布时间:2022-10-18 数据结构 算法 PYTHON 链表 职场和发展
从尾到头打印链表概述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head=[1,3,2]输出:[2,3,1]方法一:递归思路:先走至链表末端,回溯时依次将节点值加入列表,这样就可以实现链表值的倒序输出。#递归classSolution:defreversePrint(self,head:ListNode)-&gt;List[int]:returnself.rever...

Seata安装

发布时间:2022-10-04 JAVA 分布式 # 部署安装 开发语言
一、下载从Seata下载地址下载https://github.com/seata/seata/releases这里下载的是seata-server-1.5.2.tar.gz解压:tar-xvfseata-server-1.5.2.tar.gz修改配置:conf/application.ymlserver:port:7091spring:application:name:seata-serverlo...

【算法】golang实现Linux的Tree命令(简易版)

发布时间:2022-10-14 算法 LINUX GOLANG
通过递归实现打印当前或指定路径下文件的层级结构,暂未实现层级限制选项。packagemainimport( "fmt" "os" "sort")funcmain(){ dirPath:="" args:=os.Args iflen(args)&lt;=1{ dirPath="." }else{ dirPath=args[1] } PrintPathTree(dirPath,[]bool{})}...

《汇编语言》王爽(第四版) 第十四章 检测点及实验14

发布时间:2022-11-05 汇编语言 开发语言
文章目录目录前言一、检测点1.检测点14.1(1)检测点14.1.(1)(2)检测点14.1.(2)2.检测点14.2(1)实验任务(2)实现代码二、实验14访问CMOSRAM1.实验任务2.思路分析(1)读取并显示月份数据(2)读取多项数据3.实现代码总结前言本文是王爽老师《汇编语言》(第四版)第十四章检测点及实验14 访问CMOSRAM的分析及代码。一、检测点1.检测点14.1(1)检测点14...

“libGL.so.1: cannot open shared object file: No such file or directory“问题解决

发布时间:2022-11-10 DOCKER 问题解决 PYTHON OPENCV 开发语言
前言在使用Docker进行深度学习环境搭建时,安装opencv-python后出现此类报错,故寻找解决方法。一、基本概念尝试安装opencv-python-headless,而不是opencv-python,适用于Docker等无界面系统。二、操作步骤pipinstallopencv-python-headlessopencv-python:这个存储库只包含OpenCV库的主要模块。opencv-...

acwing3683 括号匹配--栈的应用

发布时间:2022-11-23 C++ 算法 刷题 开发语言
项目场景:利用栈先进后出的性质可以实现对左右括号的匹配问题。问题描述苗苗今天刚刚学会使用括号,不过他分不清小括号,中括号,大括号和尖括号,不知道怎么使用这些括号,请帮助他判断括号使用是否正确。输入格式共一行,包含一个由&lt;,(,{,[,&gt;,),},]构成的字符串。输出格式如果输入的字符串中的括号正确匹配则输出yes,否则输出no。数据范围输入字符串长度不超过10000。原因分析:栈的性质...

C++语法——字符串

发布时间:2022-10-03 C++ 刷题 开发语言
参考:[1]https://www.runoob.com/cplusplus/cpp-strings.html[2]C++的https://blog.csdn.net/Sarah_212/article/details/116720933[3]reversereverse-csdn字符串分为C风格字符串(字符数组)和C++引入的string类型一.C语言的字符数组C风格的字符串初始化charsit...

数方格C++代码

发布时间:2021-05-12 算法课习题 算法 C++
数方格(余姚2013小学)余姚市要新建一个广场,为了美观,要求完全是正方形。目前正在规划当中,正方形的大小和位置都在热烈的讨论之中。假设将可用于造广场的区域看成一个矩形,由11的单位正方形构成。如下图:这是一个46的矩形区域广场要求必须在这个矩形范围内,广场边线不能跨过任意一个单位正方形内部,只能与正方形边线重合,且广场必须为正方形。那么上图中,以下4种正方形均为可行方案:市民们提出了很多建造广场...

二叉树、二叉树的建立、二叉树的遍历、二叉树的查找、赫夫曼树(最优二叉树)、赫夫曼编码

发布时间:2022-11-23 数据结构 算法 算法篇 霍夫曼树 JAVA
1.树的建立 树的结构是有一个左节点和右节点,只是叶子节点的左右子节点都为NULL。所以我们可以定义以下结构//定义BinaryTree二叉树//定义BinaryTree是因为遍历二叉树时,//我们都要通过根结点遍历classBinaryTree{HeroNoderoot;publicHeroNodegetRoot(){returnroot;}publicvoidsetRoot(HeroNoder...

LabVIEW与汇川H5U PLC通信 官方协议,报文读取,安全稳定

发布时间:2022-11-04 算法
LabVIEW与汇川H5UPLC通信官方协议,报文读取,安全稳定。通讯配置,辅助测试。无程序网络通讯实现。常用功能一网打尽。1.命令帧读写。2.支持I16I32Float批量读写。3.支持字符串读写。4.支持XYMBool批量读写。5.支持YM单点读写。程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC等。创作不易,非诚勿扰。谢谢大家。ID:6199678582641325LabVIE...

Leetcode1678设计Goal解析器

发布时间:2022-11-07 C++ 数据结构 算法
请你设计一个可以解释字符串 command 的 Goal解析器 。command 由 "G"、"()" 和/或 "(al)" 按某种顺序组成。Goal解析器会将 "G" 解释为字符串 "G"、"()" 解释为字符串 "o" ,"(al)" 解释为字符串 "al" 。然后,按原顺序将经解释得到的字符串连接成一个字符串。给你字符串 command ,返回 Goal 解析器 对 command 的解示例...

网红神盾七号重疾险再创新高,自带住院津贴,还能赔两次!

发布时间:2022-09-19 手机 算法
提到最近受到热捧的重疾险,恐怕很多人会第一时间想到神盾七号!保险产品内卷这么严重,居然有一款产品还能从超级玛丽6号和达尔文6号争锋相对中杀出重围,并且迸发出了延绵的生命力,我这不就来兴趣了!都说欲戴王冠必承其重,今天就给大家好好扒一扒,神盾七号重疾险“武力值”到底怎么样,是不是虚晃一枪?先说结论,我自己打脸了,神盾七号重疾险真的有两把刷子!这款产品凭借其守护终身的长效保障,在人生不同阶段给予最安心...

java-net-php-python-jsp健身俱乐部管理系统演示录像计算机毕业设计程序

发布时间:2022-11-20 开发语言 JAVA PHP
java-net-php-python-jsp健身俱乐部管理系统演示录像计算机毕业设计程序java-net-php-python-jsp健身俱乐部管理系统演示录像计算机毕业设计程序本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQ...

python之进程线程

发布时间:2022-10-13 JAVA 开发语言
一、进程/线程是什么?进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;是资源分配的最小单位。特征:动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;并发性:任何进程都可以同其他进行一起并发执行;独立性:进程是系统进行资源分配和调度的一个独立单位;结构性:进程由程序,数据和进程控制块三部分组成线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的...

Kotlin 学习笔记(五)—— Flow 数据流学习实践指北(一)

发布时间:2022-11-12 开发语言 ANDROID KOTLIN
最近马斯克收购了推特之后,马上就裁掉了50%的推特员工,这不禁让我想起了灭霸的响指…还有苹果、亚马逊冻结招聘,英特尔、Lyft开启裁员计划,国内外都不好过啊,大家都开始勒紧裤腰带了···那么,我们打工人是不是也该刷刷题了···(笑Cry.jpg)Kotlin学习笔记艰难地来到了第五篇~在这一篇主要会说Flow的基本知识和实例。由于Flow内容较多,所以会分几个小节来讲解,这是第一小节,文章后面会结...

Java多线程编程(多线程深入话题)

发布时间:2022-07-22 JAVA 多线程基础 JVM 开发语言
多线程的深入话题优雅的停止线程在多线程启动使用的是Thread类里面的start()方法,而多线程的停止处理,Thread的stop()方法已经废除,不建议使用还要几个方法也被禁用停止多线程:publicvoidstop();销毁多线程:publicvoiddestroy();线程挂起:publicfinalvoidsyspend()、暂停执行;恢复挂起的线程执行:publicfinalvoidr...

硬核资源,阿里内部流传的Java程序设计基于JDK11零基础学Java笔记

发布时间:2022-11-19 JAVA 开发语言
Java语言从诞生之后就魅力不减,软件从业者和硬件制造者竞相采用Java语言编写主要的控制程序或应用程序,许多大专院校纷纷开设Java的基础课程及应用专题。市面上关于Java程序设计的图书琳琅满目,引进翻译的Java图书大部分只注重Java编程理论的讲解,在范例程序的解析上稍显不足。对初学者而言,这类书缺乏上机编程的实践指导,初学者很少有实际演练的机会。国内编著的Java书则在实践方面着墨甚多,以...

PAT(甲级)用到的模板以及知识点整理

发布时间:2022-05-03 算法 C++ PAT PTA甲级 PAT考试
//将数取余到1-modn=(n-1)%mod+1//惯用将问题分成两部分d1=sum-d2//两个正数之和相加等于负数表示发生了正溢出//两个负数之和相加等于正数表示发生了负溢出//模拟输出就先进行模拟分配 //进制转换模板 do{ arr.push_back(n%mod); n/=mod; } while(n!=0);...

Java基础学习第十四天(day14/day30多线程 sleep()、创建线程)

发布时间:2021-11-30 知乎网 算法 JAVA
多线程sleep()和wait()异同相同:一旦执行方法,都可以使得当前进程进入阻塞状态不同:1)两个方法声明的位置不同:Thread类中声明sleep(),Object()中声明wait()2)调用的要求不同:sleep()可以在任何的场景下调用,wait()必须使用在同步代码块或同步方法中3)关于是否释放同步监视器:如果两个方法都使用在同步代码块或者同步方法中,sleep()不会释放锁,wai...

代码随想录训练营day20

发布时间:2022-10-10 数据结构 算法
目录题目一:最大二叉树代码:递归 题目二:合并二叉树解法一:递归  解法二:迭代题目三:二叉搜索树重的搜索解法一:递归解法二:迭代 题目四:验证二叉搜索树代码:递归 题目一:最大二叉树力扣题目链接题目描述:给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建思路分析:(图解分析)构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树代码:...

代码随想录训练营day35

发布时间:2022-10-26 JAVA 算法 开发语言
目录题目一:柠檬水找零解法: 题目二:根据身高重建队列解法一:从小到大解法二:从大到小题目三:用最少数量的箭引爆气球解法: 题目一:柠檬水找零力扣题目链接题目描述:在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美...

代码随想录算法训练营第三期day13-栈与队列03

发布时间:2022-11-08 LEETCODE 数据结构 算法 JAVA
目录1.T239:滑动窗口最大值思路代码实现法1、自定义单调队列法2、用元素索引代替元素2.T347:前K个高频元素代码实现大顶堆小顶堆1.T239:滑动窗口最大值T:给你一个整数数组nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。提示:1&lt;=nums.length&lt;=10...

树和二叉树

发布时间:2022-11-20 数据结构 算法 数据结构与算法
树的定义树是n(n&gt;0)个结点的有限集合当n=0时为空树有且仅有一个称之为根的节点树的基本术语节点的度:节点拥有的子树数度为0的节点称之为叶子节点(终端节点)节点的度:节点拥有的子树个数树的度:树内各节点的度的最大值树的深度:树中节点的最大层次二叉树的定义(结构最简单,规律性最强)n(n&gt;=0)个节点的有限集合,它或者是空集(n=0),或者是由一个根节点及两棵互不相交的根的左子树和右子...

[leetcode]Convert Sorted List to Binary Search Tree

发布时间:2013-06-30 LEETCODE 算法
Givenasinglylinkedlistwhereelementsaresortedinascendingorder,convertittoaheightbalancedBST.这个题目坑死我了。。。一定要注意mid=mid-&gt;next的位置,rightafternew过以后,放在最后的话,rightsubtree就会出问题。。。妹的。。。debug了好久/***Definitionfo...

快排算法模板

发布时间:2022-08-30 数据结构 算法模板 排序算法 算法
快速排序的算法思想是很好理解的,只是一旦自己coding就会发现很多问题。以下是比较清晰的算法模板。voidquickSort(int*a,intl,intr){intx=a[(l+r)&gt;&gt;1];//以中间元素作为主元inti=l,j=r;do{while(a[i]&lt;x)i++;while(a[j]&gt;x)j--;if(i&lt;=j){swap(a[i],a[j]);i++...

环检测和拓扑排序

DFS实现环检测和拓扑排序leetCode210classSolution{private:intn=0;vector&lt;vector&lt;int&gt;&gt;graph;boolhasCycle=false;vector&lt;bool&gt;onPath;//记录节点是否被访问,但用于检测是否有环,重复访问则说明有环,访问完该节点的出边节点后需要恢复vector&lt;bool&gt;...