数据结构与算法
K_arma
这个作者很懒,什么都没留下…
展开
-
5. 最长回文子串(LeetCode)
class Solution { public String longestPalindrome(String s) { int len=s.length(); if(len<1){ return ""; } int res=1,start=0; int[][] dp=new int[len][len]; for(int i=0;i<len;i++){原创 2020-05-18 22:53:42 · 124 阅读 · 0 评论 -
螺旋矩阵(蛇形矩阵)相关
#include <iostream>#include <vector>#include <string.h>using namespace std;vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> v; int row=matrix.size(); int col=matrix[0].size();原创 2020-05-17 13:18:03 · 120 阅读 · 0 评论 -
通过快慢指针寻找环链表入口(java)
快慢指针可以判断出链表是否为环链表,网上此类文章比较多,可以查阅相关实现,同时快慢指针也能找出环链表的入口。上图是一个环链表,当快慢指针(快指针步长没有限制,慢指针为1)相遇时,我们可以判断到列表中有环,这时重新设定一个新指针指向链表的起点,且步长与慢指针一样为1,则慢指针与“新指针”相遇的地方就是环的入口,证明这一结论涉及数论知识,感兴趣的可以查阅相关资料。public class FastSlowTest { public static void main(String[] args) {原创 2020-05-12 13:21:21 · 464 阅读 · 0 评论 -
java中LinkedList的实现
java中LinkList集合也是使用双向链表实现,并提供了增删改查等操作1、底层使用了双向链表源码中add()方法调用了linkLast()方法,它将新节点放在之前的last后面,并变成新的last,不过要注意,它有一个属性first,不是我们平常定义的头结点(head),而是head的下一个结点,是会存储数据的void linkLast(E e) { final Node<E> l = last; final Node<E> newNode原创 2020-05-12 10:26:23 · 176 阅读 · 0 评论 -
java中ArrayList的实现
java中ArrayList集合的底层也是一种顺序表,使用数组实现,同样提供了增删改查和扩容操作1、使用数组实现ArrayList的add()方法中:elementData[size++]=e,从这也可以看出ArrayList是线程不安全的。2、具有扩容操作每次使用add方法时,根据一定算法,计算出新的大小,然后调用copyof函数进行扩容。3、遍历的方法通过内部类Itr重写Iterator接口的hasnext()和next(),从而提高遍历方式。...原创 2020-05-12 10:00:45 · 209 阅读 · 0 评论