![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
wjheha
新生代农民工
展开
-
关于环遍历问题的若干结论
在数学和计算机科学中,经常会遇到环遍历问题,这些针对环遍历的性质做一个简单研究。原创 2021-01-08 14:34:30 · 361 阅读 · 0 评论 -
约瑟夫环问题的通俗解释
约瑟夫环问题这个问题是以弗拉维奥·约瑟夫命名的,他是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道是哪一个。—— 【约瑟夫问题】维基百科思路...原创 2021-01-07 13:23:29 · 819 阅读 · 0 评论 -
leetcode72_编辑距离(EditDistance)(超详细版)
题目:思路:这个题目不太容易想到使用动态规划来解决,而且动态规划迭代方程也不容易建立。本文首先给出暴力破解算法,然后使用动态规划来解决,重点是对动态规划算法的原理进行详细解释。预备知识首先要对题目给出的三种字符串操作(插入、删除、替换)有一些基本认识。(1)首先,这三种操作满足一次性原则。例如:针对同一个字符,编辑一次,不能编辑第二次,二次编辑擦除了第一次编辑的结果;(2)其次,这三种操作满足互斥性原则。例如:针对同一个字符,编辑之后,不能再次删除,删除后就失去了原先编辑的意义。总结:(插入原创 2020-09-25 15:07:52 · 2281 阅读 · 1 评论 -
二叉树层次遍历,打印每一层固定位置元素。
前几天面试,遇到一道算法题:二叉树层次遍历,打印每一层固定位置元素。之前只做过简单的层次遍历,没有对层次做过标记。于是按照自己的想法写,结果面试过程中面试官一直提示用别的方法,最后没做出来。。。下来仔细想了想,自己的做法是完全可以的,现在把两种算法都写出来,供大家参考。public class Tree { static class TreeNode { int data; TreeNode left; TreeNode right;原创 2020-09-15 13:58:20 · 387 阅读 · 0 评论 -
leetcode_1124 表现良好的最长时间段
1124. 表现良好的最长时间段给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。请你返回「表现良好时间段」的最大长度。示例 1:输入:hours = [9,9,6,0,6,6,9]输出:3解...原创 2019-10-16 09:07:08 · 1218 阅读 · 0 评论 -
汉诺塔递归算法
汉诺塔递归算法今天在看廖雪峰大大的Python教程时,有一道汉诺塔编程问题,自己想了想,网上看了看资料,觉得挺有意思,就记录一下思路: 汉诺塔的问题:(百度百科引用)汉诺塔问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,原创 2017-07-06 18:02:11 · 680 阅读 · 0 评论 -
WordBreak解决
leetcode连接:https://leetcode.com/problems/word-break/description/ 字符串的题目,博主也心慌,自身修为不够啊。。。。。好在本题还是比较简单的。 先来研究一下字符串: 把一个长度为N的字符串进行分解,一共可以得到多少个子串呢?上述这个图片简要描述了解决过程(把重复的也考虑在内了): 数目= N + (N-1) +(N原创 2017-09-10 21:13:26 · 468 阅读 · 0 评论 -
WordBreakII_140
leetcode链接:https://leetcode.com/problems/word-break-ii/description/ 这道题目和之前的WordBreak类似,但是难度大了不少,因为要穷举出所有可能的组合情况,而不是简单的判断,这样,再采用之前的双循环,代码就会变得十分繁琐,这里我采用对字符串进行循环递归解决的。 思路: 字符串s要被字典组合表示,那么s的首字母所在子串原创 2017-09-10 21:39:50 · 182 阅读 · 0 评论 -
八皇后问题
八皇后问题: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可原创 2017-09-10 19:32:05 · 478 阅读 · 0 评论 -
凑硬币(58同城2017校招笔试题)
凑硬币(58同城2017校招笔试题) 暴力破解,循环递归实现,代码如下:/* * * 暴力破解,循环递归,找出了所有可能的组合并进行了存储, * 在循环递归的时候,因为选取的分类相互是有重叠的,生成的递归树分支出现重复,而递归函数最终返回的就是总的拼凑数目,最终会导致总的数目重复,不得不进行判断,效率低下。。 */package others;import java.util.Ar原创 2017-09-14 22:10:09 · 693 阅读 · 1 评论 -
魔法城市路径问题(腾讯2017校招笔试题)
腾讯校招的笔试题目:魔法城市路径问题原创 2017-09-14 20:06:00 · 1547 阅读 · 0 评论 -
凑硬币(2017腾讯校招笔试题)
腾讯校招的笔试题目:凑硬币原创 2017-09-14 19:56:32 · 1415 阅读 · 0 评论 -
1元,3元和5元的硬币若干枚,如何用最少的硬币凑够11元(Java实现)
程序中注释写的很清晰,大家自己看吧/* * 题目描述: * 如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? * 思路: * 采用动态规划的思想,一步步迭代去实现。 * * 硬币数目的最小单元是1、3、5,凑一次必须使用三个单元之一,假设 * 钱的数目为m,则 m = 1 * x + 3 * y + 5 * z; * * 如果要凑够0元,只有一种方案,原创 2017-09-10 20:15:32 · 4960 阅读 · 0 评论 -
走台阶问题的动态规划
题目要求:有一座高度为10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法? 比如,每次走1级台阶,一共走10步,这是其中一种走法,我们可以简写成1,1,1,1,1, 1,1,1,1,1。原创 2017-09-15 10:31:43 · 1328 阅读 · 0 评论 -
leetcode_72.Edit Distance ?待解决
Edit DistanceGiven two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)You have the following 3 operations permitted on原创 2017-10-18 09:36:05 · 126 阅读 · 0 评论 -
平安科技2017笔试题目
题目要求见图片,可放大浏览器查看! 代码见下面,无重复分类递归解决,效率还可以!package others;import java.util.Scanner;public class CoinCoinPingAn { public static void main(String[] args) { // 从命令行读取数据 Scanner in =原创 2017-09-21 22:49:10 · 14358 阅读 · 0 评论 -
leetcode_463. Island Perimeter ? 待解决
Island PerimeterYou are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid原创 2017-10-19 09:30:03 · 142 阅读 · 0 评论 -
木桶倒水 ? 待解决
题目要求:要把m升的水倒入n个相同的木桶中(假设木桶足够大),允许有的木桶是空的,问共有多少种不同的倒法?(用k表示)。5,1,1和1,5,1和1,1,5是同一种倒法。输入: 第一行是测试数据的数目x(0 <= x <= 20)。以下每行均包含两个整数m和n,以空格分开。1 <= m, n <= 10。输出: 对输入的每行数据m和n,用一行输出相应的k。输入示例: 1 7 3输出示例:原创 2017-10-19 09:41:40 · 491 阅读 · 0 评论 -
算法爱好者——表达式展开 ? 待解决
题目:给出一个表达式s,此表达式包括数字,字母以及方括号。在方括号前的数字表示方括号内容的重复次数(括号内的内容可以是字符串或另一个表达式),请编写程序将这个表达式展开成一个字符串。格式: 第一行每一行输入一个表达式s,最后每一行输出表达式展开成的字符串样例输入 abc3[a] 3[abc] 4[ac]dy样例输出 abcaaa abcabcabc acacacacdy思路:原创 2017-10-27 12:43:55 · 327 阅读 · 0 评论 -
leetcode_143.Recoder List ? 待解决
Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes’ values.For example, Given {1,2,3,4}, reorder it to {1,4,2,3}原创 2017-10-27 12:45:24 · 147 阅读 · 0 评论 -
算法爱好者——数据流中第一个唯一的数字 ? 待解决
题目:重点内容给一个连续的数据流,写一个函数返回终止数字到达时,终止数字前面出现的第一个唯一数字即只出现一次的函数(包括终止数字),如果在终止数字前无唯一数字或者找不到这个终止数字, 返回 -1。格式: 第一行输入一个 数组 ,第二行输入一个终止数字,最后输出终止数字到达时的第一个唯一数字样例输入 [ 1,2,2,1,3,4, 4, 5, 6 ] 5样例输出 3思路:原创 2017-10-27 13:37:16 · 426 阅读 · 0 评论 -
leetcode_423.Reconstruct Original Digits from English ? 待解决
Given a non-empty string containing an out-of-order English representation of digits 0-9, output the digits in ascending order.Note: Input contains only lowercase English letters. Input is guaranteed原创 2017-10-27 13:38:31 · 145 阅读 · 0 评论 -
算法爱好者——最大平均值子数组 ? 待解决
题目:给出一个整数数组,有正有负。写一个函数找到这样一个子数组,它的长度大于等于 k,且子数组的平均值最大。整数数组的长度大于等于 k 。格式: 第一行输入一个 整数数组 ,第二行输入一个数字最小子数组的长度 k,最后输出子数组的最大平均值。样例输入 nums = [ 1,12,-5,-6,50,3 ] k = 3样例输出 15.667思路:原创 2017-10-28 09:17:24 · 440 阅读 · 0 评论 -
leetcode_638. Shopping Offers ? 待解决
In LeetCode Store, there are some kinds of items to sell. Each item has a price.However, there are some special offers, and a special offer consists of one or more different kinds of items with a sale原创 2017-10-28 09:19:09 · 229 阅读 · 0 评论 -
leetcode_382. Linked List Random Node ? 待解决
Given a singly linked list, return a random node’s value from the linked list. Each node must have the same probability of being chosen.Follow up: What if the linked list is extremely large and its le原创 2017-10-20 18:36:17 · 144 阅读 · 0 评论 -
leetcode_617. Merge Two Binary Trees ? 待解决
Merge Two Binary TreesGiven two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.You need to merge them int原创 2017-10-29 15:04:41 · 185 阅读 · 0 评论 -
算法爱好者——背包问题升级版 ? 待解决
给出一个都是正整数的数组 nums,其中没有重复的数。编写一个函数从中找出所有的和为 target 的组合个数。其中一个数可以在组合中出现多次。数的顺序不同则会被认为是不同的组合。格式:第一行输入一个 整数数组,第二行输入一个数字 target ,最后按行输出所有和为 target 的组合的组成元素和所有组合的个数。样例输入nums = [ 1, 2, 4 ] target = 4样例输出[ 1,原创 2017-10-29 15:13:55 · 257 阅读 · 0 评论 -
leetcode_685.Redundant Connection II ? 待解决
Redundant Connection IIIn this problem, a rooted tree is a directed graph such that, there is exactly one node (the root) for which all other nodes are descendants of this node, plus every node has exa原创 2017-10-21 16:34:48 · 706 阅读 · 0 评论 -
leetcode_665. Non-decreasing Array ? 待解决
Given an array with n integers, your task is to check if it could become non-decreasing by modifying at most 1 element.We define an array is non-decreasing if array[I] <= array[I + 1] holds for every I原创 2017-10-30 19:22:01 · 160 阅读 · 0 评论 -
算法爱好者——逆序对 ? 待解决
在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,编写一个函数求出这个数组中逆序对的总数。 概括:如果a[i] > a[j] 且 i < j, a[i] 和 a[j] 构成一个逆序对。格式:第一行输入一个 整数数组,最后第一行依次输出数组中所有的逆序对,第二行输出逆序对的总数。样例输入[ 2,4,1,3,5 ]样例输出( 2,1 ),( 4,1 ),( 4原创 2017-10-30 19:23:58 · 232 阅读 · 0 评论 -
算法爱好者——132模式 ? 待解决
给你一个 n 个整数的序列 a1,a2,…,an,一个 132 模式是对于一个子串 ai,aj,ak,满足 i < j < k 和 ai < ak < aj。编写一个函数来检查输入的这 n 个整数的序列中是否存在 132 模式。格式:输入中每一行输入一个 整数数组,最后按行输出数组中是否存在 132 模式。不存在则输出 False,存在输出 True。样例输入[ 1,2,3,4 ] [ 3,1,原创 2017-10-30 19:25:18 · 669 阅读 · 0 评论 -
leetcode_3.Longest Substring Without Repeating Characters
题目:3. Longest Substring Without Repeating CharactersGiven a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the lengt原创 2017-10-14 22:25:36 · 146 阅读 · 0 评论 -
切分字符串让0和1个数相等 ? 待解决
题目:给定一个字符串,长度不超过100,其中只包含字符0和1,并且字符0和1出现得次数都是偶数。你可以把字符串任意切分,把切分后得字符串任意分给两个人,让两个人得到的0的总个数相等,得到的1的总个数也相等。 例如,输入串是010111,我们可以把串切位01, 011,和1,把第1段和第3段放在一起分给一个人,第二段分给另外一个人,这样每个人都得到了1个0和两个1。我们要做的是让切分的次数尽可能少。原创 2017-10-25 10:00:05 · 982 阅读 · 0 评论 -
leetcode_645. Set Mismatch ? 待解决
The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of the numbers in the set got duplicated to another number in the set, which results in repetition of on原创 2017-10-23 07:40:20 · 157 阅读 · 0 评论 -
leetcode_686.Repeated String Match ? 待解决
Repeated String MatchGiven two strings A and B, find the minimum number of times A has to be repeated such that B is a substring of it. If no such solution, return -1.For example, with A = “abcd” and B原创 2017-10-23 16:10:49 · 396 阅读 · 0 评论 -
约瑟夫斯问题/约瑟夫环(递推公式法)
约瑟夫斯问题:https://zh.wikipedia.org/wiki/%E7%BA%A6%E7%91%9F%E5%A4%AB%E6%96%AF%E9%97%AE%E9%A2%98约瑟夫环:https://baike.baidu.com/item/%E7%BA%A6%E7%91%9F%E5%A4%AB%E7%8E%AF/348830?fr=aladdin一共两个版本,解决思路是类似的:原创 2017-09-24 14:26:11 · 492 阅读 · 0 评论 -
背包问题?待解决
背包问题 背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。 相似问题经常出现在商业、组合数学,计算复杂性理论、密码学和应用数学等领域中。 也可以将背包问题描述为决定性问题,即在总重量不超过W的前提下原创 2017-09-24 14:17:09 · 244 阅读 · 0 评论 -
插入最少数字构成数组回文(搜狐2017笔试)?待解决
看不清楚可以把浏览器放大查看!原创 2017-09-18 11:17:28 · 604 阅读 · 0 评论 -
leetcode_304. Range Sum Query 2D - Immutable ? 待解决
Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).Range Sum Query 2D The above rectangle (wi原创 2017-11-01 10:15:25 · 134 阅读 · 0 评论 -
leetcode_498. Diagonal Traverse ? 待解决
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image.Example: Input: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]原创 2017-11-01 10:16:37 · 201 阅读 · 0 评论