
数据结构与算法
最菜的一个基础,要加油。
小狮子程序开发
这个作者很懒,什么都没留下…
展开
-
数据结构与算法学习——基础知识(二)
基础知识递归递归原创 2020-11-18 20:33:34 · 433 阅读 · 0 评论 -
数据结构与算法学习——基础知识(一)
数据结构与算法线性结构和非线性结构线性结构基本概念非线性结构基本概念线性结构和非线性结构数据结构主要包括线性结构和非线性结构。线性结构基本概念线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的(地址是连续的)。链式存储的线性表称为链表,链表中得存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数据、队列、链原创 2020-11-09 20:14:27 · 724 阅读 · 1 评论 -
leecode刷题学习——08字符串转换整数(atoi)
无重复字符的最长子串题意介绍解题思路本题代码题意介绍解题思路思路——>第一:考虑字符串特点,根据示例可得,字符串可能首字符为空,首字符为‘+’,‘-’区分正负,若为字符则直接返回0。第二:根据ASCII码值可得,当chars[i] < 48 || chars[i] > 57为字符,返回0。第三:在写算法时尽量避免使用string内置的方法,性能较低,且因为string是不可变的,trim()方法会返回新的变量。解题思路——>采用一个index来记录字符串的起始位原创 2020-09-26 22:49:47 · 230 阅读 · 0 评论 -
leecode刷题学习——07整数反转
整数反转题意介绍解题思路本题代码 题意介绍 解题思路碰到本题,第一思路应该是分解该整数。分解整数我们考虑的方法是采用取余的方式,每次数字除10取余得到末尾数字,并剔除末尾数字继续取余(剔除末尾数字的方法是:例如,当数字为2125,2125除以10的余数为5,2125-5=2120并除以10得结果为212,这就是剔除末尾数字的新的数字,并且可以将剔除的末尾数字乘以10来获取新的数字。)第一:降解整数,取末尾数字,第二:末尾数字*10,获得新的目标值第三:判断目标值是否超出取值范围。原创 2020-09-26 22:30:52 · 161 阅读 · 0 评论 -
leecode刷题学习——03无重复字符的最长子串
无重复字符的最长子串题意介绍解题思路本题代码题意介绍解题思路本题难点在于返回最长子串长度,首先通过将以遍历的字符存放到Map<String,Integer>中,key为字符,value为该字符的数组下标。若map中已包含该字符,则更新start。本题代码public int lengthOfLongestSubstring(String s) { //hash表判断字符是否重复,若重复则重新竞选新的start. Map<Characte原创 2020-09-25 23:35:34 · 181 阅读 · 0 评论 -
leecode刷题学习——01两数之和
两数之和题意介绍本题思路本题代码题意介绍本题思路本题为入门算法题,看到本题并不难,但是第一思路肯定是双for循环获取结果,但是需要注意[0,1]和[1,0]是一个结果集,所以在遍历时,j=i+1,即j的取值应该j>i,这样每次遍历 i 寻找结果都是在nums[j]>nums[i]中。双层for循环的效率极低,所以我们考虑对其进一步的优化,采用hash表的形式存储,当目标值符合情况则取出添加到数组中。本题代码方法一:暴力解法 /** * * @p原创 2020-09-25 14:49:06 · 181 阅读 · 0 评论 -
leecode刷题学习——06 Z字形变换
Z字形变换题意介绍本题思路本题代码题意介绍本题思路1 解读本题第一想法肯定是遍历数组,但是如何控制数组向下走和向前走是问题所在关键。这里我们将每一行看作一个rows [i](rows 是一个字符串数组)图中为实例答案,是一个rows[4]的数组,rows[0]=LDR,rows[1]=EOEII,2 根据上图,我们已得知解题思路,但是难以控制的是空格字符如何判断。这里采用boolean down=false控制字符串遍历时,当downfalse的时候,字符串向前走,当downtrue的时候,原创 2020-09-25 14:12:24 · 202 阅读 · 0 评论