用递归思想轻松实现字符串的倒序输出
如题目所言,代码如下:#include<iostream>using namespace std;void reverse(){ char a; cin>>a; if(a!='*') reverse();//在这里递归 if(a!='*') cout<<a;//跳出递归就来到这里}int main(){ reverse(); return 0;}分析(堆砌语言):输入放在函数体中,递归是一种选择结构,这里我们定义一个字符,我们输入的字符串要以
C++ 线性表知识点摘录
线性表(linear list)是一种数据结构,是由 n 个具有相同特性的数据元素构成的序列。线性表中元素的个数 n 即为线性表的长度,当 n = 0 时称为空表。线性表的相邻元素之间存在着序偶关系。如用( a[0] ,…… ,a[i-1] ,a[i] ,a[i+1] ,…… ,a[n-1] )表示一个线性表,则称 a[i-1] 是 a[i] 的前驱,a[i+1] 是 a[i] 的后继。线性表的特性线性表中必存在唯一的一个“第一元素”;线性表中必存在唯一的一个“最后元素” ;除最后
自行实现一些 C++ 自带的字符串操作函数
输出效果如下:代码如下(自己定义 cstring 中的 strlen,strcpy,strcat,strcmp,strchr,strstr 函数并调用):#include<iostream>#include<cstring>using namespace std;//计算字符串的长度(元素个数)int strlen0(const char *a){ const char *p=a; while(*p!='\0') p++; return p-a;}//拷贝字符
一个程序了解链表的基本操作
基础请看:C++ 线性表知识点摘录目的:输入 num 的值,表示(整数 data)链表的长度,进而设计链表的基本函数实现链表的输入,输出,排序,删除特定元素的操作,具体解释请看注释~先看代码:#include<iostream>using namespace std;struct node{ int data; node*next;};//创建链表,实质是结构与指针的结合使用node*tailinsert(node*head,node*tmp);//尾部插入函数node*he
数据库 Select语句总结、连接查询及注意事项
SQL 编程 —Select 详解一般语句的书写顺序和执行顺序如下:我们按照以下被执行的顺序加以解释说明1、关于from:from+表名这个没啥说的。唯一值得一提的就是表名通常给他起个别名,这样方便表中数据的引用。【例】:select e.ename,d.dname from emp e,dept d;.2、关于group by按照某个字段或者某些字段将数据分组。会将group...
Spring学习笔记总结
0、概述为什么要使用Spring框架?松耦合:通过 xml 配置或注解即可完成 bean 的依赖注入 左:表演者和小提琴高耦合右:通过依赖注入的方式,松耦合。表演者无需知道要演奏什么乐器,通过依赖注入的方式,不同的环场合可以演奏不同的乐器。1、Maven+Spring环境搭建创建Maven项目 修改 pom.xml ,jetty 插件配置 ...
Mybatis学习笔记-狂神说
1.Mybatis简介持久化持久化是将程序数据在持久状态和瞬时状态间转换的机制。即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。JDBC就是一种持久化机制。文件IO也是一种持久化机制。在生活中 : 将鲜肉冷藏,吃的时候再解冻的方法也是。将水果做成罐头的方法也是。为什么需要持久化服务呢?那是由于内存本身的缺陷引起的内存断电后数据会丢失,但有一些对象是无论如何都不能丢失的,比如银行账
【LeetCode-Easy-Java】1. 两数之和
1. 两数之和题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法一:暴力循环法思路:建立两个for循环,相当于为数组n...
【LeetCode-Easy-Java】21. 合并两个有序链表
21. 合并两个有序链表题目:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4思路:用两个指针指向分别指向两个链表,比较指针指向的两个节点,小的那个指针往后移,并且把小的那个节点添加到合并后的新链表中。dummy node:如果新链表不用dummy node记录首节点,随着...
【LeetCode-Easy-Java】26. 删除排序数组中的重复项
题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。思路:双指针, i 指向第一个元素,j 指向第二个元素,如果元素 j 和元素i相等...
【LeetCode-Easy-Java】53.最大子序列和
题目:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。解题思路1:动态规划1、dp(i)表示以nums[i]为最后一个元素组成的连续子数组的最大和。2、dp(i-1)表示以nums[i-1]为最后一个元素组成的连续子数组的最大和。3、dp(i)可以表示成f(i-1)+nums[i],与dp...
【LeetCode-Easy-Java】198. 打家劫舍
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。...
【LeetCode-Medium-Java】64. 最小路径和
题目:给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:动态规划* 1、dp[i][j] 表示到达 i,j位置最小的总和。* 2、dp[i][j] = dp[i-1][j]+grid[i][j] 和 dp[i][j-1]+gr...
今日推荐
周排行