数据结构
梧杵
主搞Java后端开发,额外会点前端
展开
-
Java研发岗面试手撕必背算法82道
有⼀些题我们不管是什么难度都必须掌握的Hard会⼀些⾼频即可;主攻Medium,反复做,略加回忆思考就可以写出;Easy的题⼀秒钟都不许卡这不是竞赛,真的不需要智⼒,只需要你努⼒,不断重复+少量思考总结即可。没那么多⼈有时间给你出新题,绝⼤多数正常⾯试都是原题。字节等公司可能让你⾃⼰写测试⽤例,平时注意练⼀下。作者目标:吃透一道就换成超链接。原创 2023-04-12 12:58:20 · 1941 阅读 · 2 评论 -
用递归算法进行二分查找
用递归进行二分查找(C语言)#include<stdio.h>#include<stdlib.h>#define N 100/*递归二分查找*/int compare(const void *value1, const void *value2) { // 升序 return (*(int*)value1 - *(int*)value2);}i...原创 2019-10-24 18:34:19 · 778 阅读 · 0 评论 -
C语言幻方矩阵的求解
所谓幻方,就是一个 n 行 n 列的正方形,当 n 为奇数时,称为奇数阶幻方。共有 n2 个格子,将 1,2,3,…,n2 这些数字放到这些格子里,使其每行的和、每列的和及两 条对角线的和都是一个相同的数。试编程由键盘输入一个奇数 n,输出一个 n 阶幻方;解题思路:首先我们将主教材的算法提示按步分解。(1)定义一个数组 a[n][n]来存储 n 阶幻方,这里 n 为奇数,数组各元素的初值均为 0,表示该位置上还没有填数;(2)用一个整型变量 k 来表示当前要赋的数,按题意 k 将开始从 1 到 n原创 2021-02-03 17:49:48 · 3236 阅读 · 1 评论 -
找相同字符串位置问题
编写一个程序输入两个字符串 string1 和 string2,检查在 string1 中是否包含有string2。如果有,则输出 string2 在 string1 中的起始位置;如果没有,则显示“NO”;如果 string2在 string1 中多次出现,则输出string1 中出现的次数以及每次出现的起始位置。【算法分析】:本题需要对两个字符串进行循环,但与普通循环不同的是,这两个循环并不是同时进行的。string1 开始循环后,string2 并不一定开始循环,而是需要判断 string2 的首字原创 2021-02-08 17:27:01 · 1048 阅读 · 0 评论 -
求字符串中的字母和数字个数
编写程序输入一个字符串,分别统计输出该字符串中的字母个数和数字个数算法分析:判断字母和数字的核心方法是依靠 ASCII 码进行,所以对字符串中的每个字符逐个判断即可得到结果。实现方法依然是依靠指针。程序分析:本题需要注意的有两点:1、char 类型的变量,初学者往往理解为是不能直接比较大小的,实际上直接比较大小时,是将类型转换为了 int 后比较的 ASCII 码值。这样的方法相对与手动转换为 ASCII码比较而言更加高效和方便,希望读者掌握。2、字母包含大小写,这点容易遗漏,在程序设计时应该考虑更原创 2021-02-08 17:45:06 · 7227 阅读 · 0 评论 -
遍历Map集合的两种方法
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;/** * Description:遍历Map的两种方法 * User: WuChu * Date: 2021/7/26 * Time: 17:01 */public class MapTest01 { public static void main(String[] args) { .原创 2021-07-26 17:48:55 · 412 阅读 · 0 评论 -
数组的增删改查
#include<stdio.h>#include<stdlib.h>#include<math.h>//定义一个Arr数组结构体,有三个成员变量struct Arr{ int * pBase; int len; int cnt;};//声明函数void init_arr(struct Arr * pArr, int length);bool append_arr(struct Arr * pArr,int val);bool原创 2021-10-15 21:46:33 · 83 阅读 · 0 评论 -
链表的增删改查
#include<stdio.h>#include<math.h>//定义一个结点数据结构typedef struct Node{ int data; //数据域 struct Node* pNext; //指针域}NODE, *PNODE;//NODE => struct Node//PNODE => struct Node *//函数声明PNODE create_list();void traverse_list(PNODE p原创 2021-10-23 14:53:04 · 76 阅读 · 0 评论 -
栈的基础操作
#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct Node{ int data; struct Node* pNext;} NODE,*PNODE;typedef struct Stack{ PNODE pTop; PNODE pBottom;}STACK,*PSTACK;//申明函数 void initStack(PSTACK)原创 2021-10-29 11:52:34 · 263 阅读 · 0 评论