
算法和数据结构
文章平均质量分 79
小记算法和数据结构
__hank
Keep coding, keep learning!
展开
-
两数相加
leetcode 第二题之前华为面试一面的原题,当时没有写出 bug-free 的代码,突然想起来这道题与硬件电路中的加法器设计类似,类比的写出了相应的解法,通过了 leetcode 测试。# 整体思想是硬件电路设计中的一位加法器通过级联构成多位加法器# 链表节点定义class ListNode: def __init__(self, x): self.val = x self.next = None# 两个一位十进制数相加(模拟硬件电路中的一位全加器原创 2020-11-02 22:23:12 · 286 阅读 · 0 评论 -
数字相关算法实现
用 C 实现了几个常用的数字相关的算法:快速幂求整数次方。辗转相处求最大公约数。判断是否为素数。// Filename: algorithm.h// Created by lbt on 2020-9-21.// Description: head file of number algorithm#ifndef NUM_ALGORITHM_ALGORITHM_H#define NUM_ALGORITHM_ALGORITHM_H# include<stdbool.h>do原创 2020-09-22 09:48:30 · 259 阅读 · 0 评论 -
C 语言实现基本排序算法
以下代码实现了基本的排序算法,包括:二分插入排序、选择排序、冒泡排序和快速排序四种。// Filename: sort.h// Created by lbt on 2020-9-20.// Description: head file of sort algorithm#ifndef SORT_SORT_Hvoid InsertSort(int a[], int n);void BubbleSort(int a[], int n);void QuickSort(int a[], int l原创 2020-09-20 18:09:43 · 198 阅读 · 0 评论 -
C 语言单链表基本操作
复习下数据结构,使用 C 语言实现了带头节点的单链表。单链表基本操作有:节点初始化、链表初始化、插入节点、查找节点、删除节点和删除链表等。下面的程序中,list.h 为头文件, 其中包含了上述基本操作的声明即链表节点的定义,lsit.c 为单链表操作函数的实现,main.c 是对单链表操作函数的测试。// Filename: list.h// Created by lbt on 2020-9-17.// Description: head file for list demo#ifndef UNT原创 2020-09-20 13:41:55 · 338 阅读 · 0 评论 -
01背包问题
01 背包问题的 Python 解法回溯思想解 01背包 问题基础问题 —— 最大重量基础问题变体 1——最大价值回溯法的优化动态规划解背包问题回溯思想解 01背包 问题基础问题 —— 最大重量已知:有 n 个物品需要装进背包,items[i] ( 0<= i <= n) 为第 i 个物品的重量 ,背包最大容量为 w。求:背包最多可装入物品的总重量。例如, 有 3 个物品,重量分别为 [3, 5, 8], 背包最大容量为 9, 则最大装入物品的总重量为 8,装入方案有 (3, 5) 或原创 2020-09-09 11:26:38 · 963 阅读 · 0 评论 -
N 皇后问题
八皇后问题问题描述:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。Python 解法:代码如下,使用递归法实现,这个问题划分成 N 个阶段,依次将 N 个棋子放到第一行、第二行、第三行……第N行。在放置的过程中,我们不停地检查当前放法,是否满足要求。如果满足,则跳到下一行继续放置棋子;如果不满足,那就再换一种放法,继续尝试。# N 皇后类class Queens: def __init__(self, count_原创 2020-09-07 15:13:41 · 132 阅读 · 0 评论 -
选自牛客网华为机试题库:IP 地址分类
IP 地址分类题目描述解答题目描述解答def is_A(ip_nums, net_mask_nums): if ip_nums[0] < 1 or ip_nums[0] > 126: return False else: return Truedef is_B(ip_nums, net_mask_nums): if ip_nums[0] < 128 or ip_nums[0] > 191: retur原创 2020-09-04 23:03:29 · 411 阅读 · 0 评论 -
树和二叉树(1)——概念
文章目录树的定义与基本操作树中的一些概念二叉树1. 满二叉树2. 完全二叉树树与森林哈夫曼树与哈夫曼编码堆排序算法树的定义与基本操作树描述的是一种层次结构,如下图所示,下图中节点 A 为树的根节点,一颗树有且仅有一个根节点。树的定义是递归的,当树节点数量大于一时,除根结点外的其他节点又可以构成根节点的子树。树中的一些概念节点:表示树中的元素项。节点的度数:节点拥有的子树个数。树的度数:树中最大的节点度数。叶子节点:度数为 0 的节点。树的层次:根节点为第一层,根节点的子节点为第二层,以此原创 2020-08-09 21:57:23 · 439 阅读 · 1 评论 -
剑指 offer 单链表题目总结
链表节点定义class ListNode: def __init__(self, x): self.val = x self.next = None相关题目1. 删除一个节点给定一个链表头节点,删除值为 key_val 的节点并返回删除后的链表头。beginhead == Nonedef delete_node(head: ListNode, key_val: int)->ListNode: ...原创 2020-08-05 11:47:28 · 173 阅读 · 0 评论 -
DFS 和 BFS
文章目录剑指 offer 中二维矩阵搜索相关DFS(深度优先搜索)+ 剪枝(遇到这条路径不符合则立即返回)BFS(广度优先搜索)Python 解法对于 DFS 和 BFS 小结剑指 offer 中二维矩阵搜索相关题目:剑指offer 12. 二维矩阵中的路径 及 13. 求机器人可达点数说明: 本文中出现的代码与伪代码均为 Python 代码DFS(深度优先搜索)+ 剪枝(遇到这条路径不符合则立即返回)# 12 二维矩阵中的路径class Solution: def exist(self原创 2020-07-30 14:18:48 · 140 阅读 · 0 评论