数据结构
文章平均质量分 51
cjzcjl
客户端一片哀嚎……
展开
-
面试时遇到得一道算法题_找出字典中的镜像单词对
给出一个字典,找出所有镜像成对的单词对,如字典中出现abcd和dcba,则列出来个人原创思路:使用字典树,每个单词拆分为每一个字母为一个单元,每个单元作为一个结点。同时每录入一个单词的同时,录入它的镜像词:每添加一个单词的时候,如果发现在自己做添加操作前,能找到全匹配的路径,而且能跑到叶子结点,就代表之前已经被自己之前的镜像词添加过一次了,就连同自己和自己的镜像输出即可。这样只要遍历一次字典就把符合模式的单词对全部找出来了。...原创 2022-02-24 21:41:10 · 189 阅读 · 0 评论 -
leetcode_两数相加_个人解法
个人解法:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = nex..原创 2021-11-23 20:32:12 · 1493 阅读 · 0 评论 -
Java层序遍历(非递归)遍历一个目录下的所有文件的办法
最近研发的功能需要遍历所有文件,觉得网上很多递归的代码都很辣鸡,如果深度太大很容易栈溢出,我自己用队列层序遍历多叉树的办法实现了,不怕深度非常深的文件,而且代码特别简短,经验思想来源于我自己以前的练习文章:https://blog.csdn.net/cjzjolly/article/details/79386681《n叉树算法》特此纪录一下:package com.lang....原创 2019-09-20 15:06:31 · 719 阅读 · 0 评论 -
使用Canvas + Path和“曲面细分”算法实现钢笔笔锋效果
本文用于在无法获取压感的设备上实现书法效果,因此所有的书写效果的笔触粗细变化,均是通过速率进行确认。最后实现效果如下(不会书法,只能让大家体会一下效果),代码基于之前的文章https://blog.csdn.net/cjzjolly/article/details/88661286上进行修改而成:一、推导: 在正常的情况下,使用Canvas和Path分段绘制用户的书写结果时...原创 2019-07-05 17:37:24 · 7278 阅读 · 2 评论 -
使用Java写公式计算器
我的一位好友需要软件里面内置一个小插件,可以根据用户输入的简单公式引导用户进行输入和计算,所以简单地写了一个原理实现。主要用到Java字符串处理和数据结构的栈思想,难度不大但要非常细心。原理如下:1、对公式以等号为分隔符进行左右分割,然后取得公式右边字符串2、对公式右边字符串进行运算符(+、-、*、/、(、))和常数的去除,然后分割出变量名3、请求用户输入各变量的值,用用户输入值取...原创 2018-12-15 16:20:07 · 16278 阅读 · 12 评论 -
利用多叉树(字典树)实现简单的快速搜索
今晚在公众号上看到一条题: 看到题目第一时间想到树,而且是多叉树。为什么呢? 首先说说为何不选择顺序表,我们来试想想,如果500万个单词放在顺序表上,不加索引而且乱序,那么搜索一个关键词为开头的单词的时间按最差算要500万次比较,简直疯狂。但是如果先按首字母a~z排序一次,并记住每个首字母的第一个单词在表格第几个位置,效率又要好些,如果第二个字母再排序一些再做索引...原创 2018-10-30 20:41:03 · 6403 阅读 · 1 评论 -
一种利用JNI实现的对象序列化存储库,使得JAVA序列化对象后可以存于内存区高速读写,并且不受JVM控制以避免OOM
本工程应用于一款安卓白板程序,因有读写速度需求,传统的序列化到磁盘的方式读写速度太慢,因此想到了利用C的特性写一个高速缓存,并继承实现了自己的inputStream和outputStream,用于暂存大规模多叉树和大体积对象。本工程的序列化对象的数据均使用一个整数作为标记进行区分,有需要的朋友可以修改本工程的实现以支持字符串标记。 本工程的JNI部分: 一、首先是M...原创 2018-06-27 19:49:29 · 597 阅读 · 0 评论 -
JAVA多叉树森林的构造、内存存储、磁盘存储与层序、先序(深度)遍历
因为项目需要简历一个森林来保存图形之间的父子关系,因此建立一种多叉树作为验证模型。具体原理如下草稿所示:实现代码如下:package com.test.forest;import java.util.ArrayList;import java.util.List;import java.util.Queue;import java.util.concurrent.LinkedBlo...原创 2018-06-20 10:25:08 · 1950 阅读 · 0 评论 -
n叉树(n有最大值)的数组形多叉树的先序递归遍历方法
#include "stdio.h"#include "stdlib.h"#define new(Class) (Class*)malloc(sizeof(Class)) typedef struct node Node;struct node{ Node *next[3]; char content;};Node* createTree(){ Node* A = n...原创 2018-05-04 16:04:14 · 732 阅读 · 0 评论 -
一种多叉树的例子
#include "stdio.h"#include "stdlib.h"#define new(Class) (Class*)malloc(sizeof(Class)) typedef struct node Node;struct node{ Node *next; Node *nextLayer; //有地址的话代表有下一层链表 int num;};//弄一...原创 2018-04-21 16:43:59 · 663 阅读 · 0 评论 -
递归和迭代的转化示例——非递归二叉树遍历的写法
一、递归式遍历: 递归十分适合于自相似(分形)类的数据结构。有些线性数据结构的递归可以改为尾递归使得递归栈帧不再累积。但非线性数据结构的递归由于每层的栈帧可能以不同的方式和参数调用自身,例如二叉树遍历的递归,每层函数栈里面有两次自我调用,不能该为尾递归,在极限情况下有爆栈可能。因此需要模仿函数栈的特性写出等效迭代代码。 二叉树后序递归逻辑结构如下: void re...原创 2018-02-27 13:31:54 · 472 阅读 · 0 评论 -
变量、指针、参数、数组、内存分配的关系和陷阱
陷阱1:传入一个无指针的指针变量作为形参,你是无办法往里面塞地址或内容的例子1:#include "stdlib.h"#include "stdio.h"void shit(char *p){ printf("p之前指向的地址是:%d\n",p); p= (char*)malloc(sizeof(char)); printf("p现在指向的地址是:%d\n...原创 2018-02-27 12:37:52 · 267 阅读 · 0 评论 -
奇葩链表使用方法之 不用结构体来达成链表
如果不用结构体,用double类型变量,整数放内存区地址,小数点后用用户的值,是否也能构成链表咧?~发现完全是可行的#include "stdio.h"#include "stdlib.h"main(){ double *now,*head,*next; int i,temp; head = now = (double*)malloc(sizeof(double)); next ...原创 2018-02-27 12:24:09 · 725 阅读 · 0 评论 -
JAVA的链表个人实现(JAVA的引用其实就是隐性的指针)
package com.alist;class alist<K>{ private Object val; private alist<K> head,now,temp,next; private int length = 0; public alist() { head = now = this; } public Object get(...原创 2018-02-27 12:20:36 · 431 阅读 · 0 评论 -
n叉树算法 完美成功版本
没有任何查书、没有任何上网查,全部纯手打,作为专业科思维训练。感觉非常有成就感!!!主要涉及单链表、双链表、链式队列、递归算法~直接贴代码吧:#include "stdio.h"#include "stdlib.h"struct childlist{ struct node *current_node; struct childlist *next; };struct node...原创 2018-02-27 12:17:23 · 653 阅读 · 0 评论