
数据结构与算法
刷一些编程题,找找感觉
czl389
我的github ID:czl389.
展开
-
汉诺塔 python 解法
汉诺塔 python 解法将n个盘片从x 转移到z, y是中介。可以分解符为3步:将x上面n-1个盘片转移到y;将x 最底部的盘片转移到z;将y上的n-1个盘片转移到z;step = 0# x --> zdef hanoi(n, x, y, z): if n == 1: global step step += 1 print('step ' + str(step) + ': ' + x + '-->' + z)原创 2020-11-01 21:46:41 · 309 阅读 · 0 评论 -
八皇后问题python解法
八皇后问题python解法递归解法,board 是一维列表,下标表示行,值表示皇后所在的列。board = [-1] * 8def printboard(result): for v in result: length = len(result) print('□ '*v + '■ ' + '□ '* (length-v-1)) print('\n')def is_valid(board, row, col): for r in ran原创 2020-11-01 21:30:53 · 412 阅读 · 0 评论 -
《剑指offer》python实现
配合Online Judge刷题,体验更佳!剑指offer_编程题_牛客网二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数# -*- coding:utf-8 -*-class Solution: # array...原创 2020-01-30 22:30:16 · 425 阅读 · 0 评论 -
leetcode 437.path sum iii
题目描述(翻译):给你一个二叉树,每个结点存的是整数。再给你个数值作为和,请找出和是这个数值的路径数量。路径没有要求起点或终点必须是根结点或叶子结点,但是它必须是向下的(只能按从父结点到子结点的顺序搜索)。树有不超过1000个结点,值在-1000 000到1000 000的范围。You are given a binary tree in which each node contains原创 2016-11-27 13:40:52 · 1034 阅读 · 0 评论 -
leetcode 415.Add Strings
题目难度:easy这是一道乍一看非常简单的题,简单到像我这样的学渣看到题目之后有强烈的码代码的冲动:“写一个字符串转数字的函数,相加求和,使用to_string再转回字符串,Over!”写完之后信心满满的提交,然后就发现在一个大的case上报了错,检查一下,发现是int不够盛!usigned int呢,不够!long!long long!都不够,检查题干发现:The length of b原创 2016-11-03 19:07:04 · 518 阅读 · 0 评论 -
leetcode 136.Single Number
leetcode=》single number题目描述:一个整型数组,除了有一个单独元素,其余所有元素都出现两次,请找出这个单独元素。要求线性时间复杂度,不使用额外内存。巧妙又很简洁的解法:使用抑或(XOR)位运算。解法来自leetcode讨论区:My O(n) solution using XORclass Solution {public: int singleNum原创 2016-10-20 16:25:02 · 576 阅读 · 0 评论 -
leetcode 33.Search in Rotated Sorted Array 旋转数组二分查找法搜索
题目来源leetcode 33.Search in Rotated Sorted Array 地址:点击打开链接代码class Solution {public: int search(vector& nums, int target) { int n = nums.size(); int first = 0; int last = n原创 2016-10-15 16:07:45 · 791 阅读 · 0 评论 -
leetcode 101. Symmetric Tree 解题笔记
101. Symmetric TreeGiven a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1 / \ 2 2原创 2016-12-20 15:32:35 · 635 阅读 · 0 评论 -
leetcode 198. House Robber+动态规划
来自Leecode上的一道easy题目《房屋盗贼》,题目可简述为:你是一个职业的盗贼,去偷沿街的一连串房子,每个房子都有一定数目的珠宝。唯一的限制就是不能偷窃相邻的两个房屋,这样会触发报警系统。然后最后的问题是求最大收益。用编程术语描述即是:给定一个数组,里面存储的非负整数,代表相应房间的珠宝数量,按照不能访问相邻元素的原则,求取访问的元素之和的最大值。比如测例:输入[1,2,3,10,5],输出原创 2016-12-14 15:28:49 · 803 阅读 · 0 评论 -
二叉树按层打印
首先一下算法是以宽度优先算法(BFS)为基础,宽度优先搜索是基于队列实现的。通过设立两个节点变量last(当前打印层的最右节点),nlast(下一打印层的最右节点)来控制换行。算法流程:初始化:last=root (root 是根节点)循环遍历:出队打印 左右子孩子入队,并赋值nlast判断:若出队元素与last相等,则换行,并last=nlast循环终止条件:队列为空C++代码void原创 2017-09-01 23:19:44 · 1352 阅读 · 0 评论 -
Leetcode 70. Climbing Stairs
题意解析说一个人爬楼梯,共有n阶。每一步可以爬1阶,或者2阶。求爬这个楼梯共有多少种不同的爬法。Accepted Solution有人研究了出了结论,说这个问题的解就是斐波那契数列,没错,这是结论,我们不会推结果怎么来的,只是解决问题那么就很简单了:最简单的递归案例。 本例中阶梯数n与结果的关系:0 1 2 3 4 5 … 1 1 2 3 5 8原创 2017-09-06 17:31:32 · 833 阅读 · 0 评论 -
LeetCode 463. Island Perimeter
题意解析这道题需要看图。说有如下的小岛,小岛就是小岛,四周全都是水,中间没有湖泊之类的。这种布局可以用二维数组来表达,1代表陆地,0代表水。求小岛的周长。 Accepted Solution怎么统计每块陆地贡献的边数呢?如图,黄色的边是有效的,黑色的边是无效的。确立这样的准则:对于每块陆地,最多贡献4条边;检查他的邻居,如果是陆地扣除一条边。然后统计所有陆地的贡献的边数之和,即为答案。class原创 2017-09-06 16:49:50 · 740 阅读 · 0 评论 -
LeetCode 83. Remove Duplicates from Sorted List
题意解析链表操作题,对已经排好序的链表,如果有值重复的节点,则删除重复节点。 举例: 1->1->2 得到1->2 1->1->1->2 得到1->2Accepted Solution/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *原创 2017-09-06 16:05:55 · 667 阅读 · 0 评论 -
LeetCode 437. Path Sum III
题意解析在给定的二叉树中找到这样的路径,所有元素的和等于给定整数。 路径不一定从根节点出发,到叶节点结束。而只要它满足是从上至下的。 找出所有路径的数量。Accepted Solution/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *原创 2017-09-06 15:42:20 · 625 阅读 · 0 评论