LeetCode第887题(动态规划):鸡蛋掉落
LeetCode第887题(动态规划):鸡蛋掉落========================
题目如下:
LeetCode第887题(动态规划):鸡蛋掉落
You are given k identical eggs and you have access to a building with n floors labeled from 1 to n.
You know that there exists a floor f where 0 <= f <= n such that any egg dropped at a floor higher than f will break, and any egg dropped at or below floor f will not break.
Each move, you may take an unbroken egg and drop it from any floor x (where 1 <= x <= n). If the egg breaks, you can no longer use i ...
LeetCode第72题(动态规划):编辑距离
LeetCode第72题(动态规划):编辑距离========================
题目如下:
72. 编辑距离
Given two strings word1 and word2, return the minimum number of operations required to convert word1 to word2.
You have the following three operations permitted on a word:
Insert a character
Delete a character
Replace a character
Example 1:
Input: word1 = "horse", word2 = "ros"
Output: 3
Explanation:
horse -> rorse (replace 'h' with 'r')
rorse -> rose (remove 'r')
rose -> ros (remove 'e')
Example 2:
Input: word1 = "i ...
LeetCode第64题(动态规划):最小路径和
LeetCode第64题(动态规划):最小路径和========================
题目如下:
64. 最小路径和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例 1:
输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
示例 2:
输入:grid = [[1,2,3],[4,5,6]]
输出:12
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 200
0 <= grid[i][j] <= 100
我的代码class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = (int) grid.size();
int ...
LeetCode第62题(动态规划):不同路径
LeetCode第62题(动态规划):不同路径========================
题目如下:
62. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
示例 1:
输入:m = 3, n = 7
输出:28
示例 2:
输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下
示例 3:
输入:m = 7, n = 3
输出:28
示例 4:
输入:m = 3, n = 3
输出:6
提示:
1 <= m, n <= 100
题目数据保证答案小于等于 2 * 109
我的代码class Solution {
public:
int uniquePaths(i ...
解决动态规划问题的思考过程摘录
解决动态规划问题的思考过程摘录========================
心得: 这里的记忆化颇有意思,dp[i]如果之前计算过,且不为-1,则直接返回dp[i]。如未计算过则计算且只计算一次dp[i],也就是说,本来递归需要大量重复的计算,却因为之前已经记录了该值而能直接得到结果。给我感觉是提前记录需要重复计算的值,从而提高效率。这种方法配合递归比较细节,着实让人眼前一亮。
摘录:
让我们先从一道例题开始
题目:300.最长上升子序列
描述:
给定一个无序的整数数组,找到其中最长上升子序列的长度。
示例:
输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是4。
考虑能否将问题规模减小将问题规模减小的方式有很多种,一些典型的减小方式是动态规划分类的依据,例如线性,区间,树形等。这里考虑数组上常用的两种思路:
每次减少一半:如果每次将问题规模减少一半,原问题有[10,9,2,5],和[3,7,101,18],两个子问题的最优解分别为 [2,5] 和 [3,7,101],但是找不到好的组合方式将两个子问题最优解 ...
Hexo进阶之各种优化摘录
Hexo进阶之各种优化摘录========================
基于Hexo的matery主题搭建博客并深度优化摘录
基于Hexo的matery主题搭建博客并深度优化摘录========================
git Large File Storage摘录
git Large File Storage摘录========================
Hexo文件名大小写问题摘录
Hexo文件名大小写问题摘录========================
动态规划之状态压缩
动态规划之状态压缩摘录========================
一、概述1.状态压缩状态压缩就是使用某种方法,简明扼要地以最小代价来表示某种状态,通常是用一串01数字(二进制数)来表示各个点的状态。这就要求使用状态压缩的对象的点的状态必须只有两种,0 或 1;当然如果有三种状态用三进制来表示也未尝不可。
2.使用条件从状态压缩的特点来看,这个算法适用的题目符合以下的条件:
解法需要保存一定的状态数据(表示一种状态的一个数据值),每个状态数据通常情况下是可以通过2进制来表示的。这就要求状态数据的每个单元只有两种状态,比如说棋盘上的格子,放棋子或者不放,或者是硬币的正反两面。这样用0或者1来表示状态数据的每个单元,而整个状态数据就是一个一串0和1组成的二进制数。
解法需要将状态数据实现为一个基本数据类型,比如int,long等等,即所谓的状态压缩。状态压缩的目的一方面是缩小了数据存储的空间,另一方面是在状态对比和状态整体处理时能够提高效率。这样就要求状态数据中的单元个数不能太大,比如用int来表示一个状态的时候,状态的单元个数不能超过32(32位的机器),所以题目一般都是至少有一 ...
C++标准库使用
C++标准库使用========================
测试了一些标准库提供的数据结构和函数等值得一提的是那个自动推导auto用着非常舒服,可自动推导容器内的变量类型、函数的返回值类型等。模板就不用说了,一行胜百行。需要大量重复的工作,还是建议用模板,模板的效率我还没时间去测试,不过不管怎么样,模板真方便。
template <typename T>
auto printData(const T& v){
for (auto i: v) {
cout<<i<<" ";
}
}
以下是.hpp文件和.cpp文件
//
// test.hpp
// Code
//
// Created by 张赛东 on 2022/1/6.
//
#ifndef test_hpp
#define test_hpp
#include "stdc++.hpp"
using namespace std;
using gg = long long;
class Test {
int testThings;
...
Mac上使用C++万能头文件
Mac上使用C++万能头文件========================
下述代码相当于#include<bits/stdc++.h>直接将下列文件拷贝或移入工程,引用时,使用#include "stdc++.hpp",当然你可以自定义该hpp头文件名。
//
// stdc++.hpp
// Code
//
// Created by 张赛东 on 2021/1/1.
//
#ifndef stdc___hpp
#define stdc___hpp
//下述代码相当于#include<bits/stdc++.h>
// C++ includes used for precompiling -*- C++ -*-
// Copyright (C) 2003-2014 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it ...
InterfaceKit--One line of code to implement interfaces of UIKit,AppKit,and WatchKit in SwiftUI interface!
InterfaceKit========================
One line of code to implement interfaces of UIKit,AppKit,and WatchKit in SwiftUI interface!
Chinese (Simplified): 中文文档Code interpretation document: https://github.com/adong666666/InterfaceKitDoc(or this repository’s Docs)The basic idea of InterfaceKit is that we want some user interface abstraction layer that sufficiently encapsulates actually calling UIKit,AppKit,and WatchKit directly. It should be simple enough that common things are easy, but comprehensive ...
jazzy生成代码解释文档
jazzy生成代码解释文档========================realm的jazzy的确好用
安装看官网https://github.com/realm/jazzy
配置文件这个不配置也可以生成文档,只是默认的文档比较丑,我用的文件如下
author: Saidong Zhang
author_url: https://zsd.name/
github_url: https://github.com/adong666666/InterfaceKit
root_url: https://zsd.name/InterfaceKit/
module: InterfaceKit
output: Docs
theme: fullwidth
xcodebuild_arguments: [-workspace, 'InterfaceKit.xcworkspace', -scheme, 'InterfaceKit']
命令行生成文档我用这个命令行jazzy -o Docs将文档生成至Docs文件夹下,注意默认要在xcodeproj目录下执行。这样一来,只要你的代码遵守iOS注释规范,就能生 ...
podspec示例
podspec示例========================
1#
# Be sure to run `pod spec lint CommonUse.podspec' to ensure this is a
# valid spec and to remove all comments including this before submitting the spec.
#
# To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
#
Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# These ...
Carthage使用工作记录
Carthage使用工作记录========================主要是三点
1、写Cartfilegithub "SnapKit/SnapKit" ~> 5.0
...
2、工程目录下命令行生成frameworkcarthage update --platform iOS
生成xcframeworkcarthage update --platform iOS --use-xcframeworks
多平台carthage update --use-xcframeworks
3、拖入工程在工程目录下会生成一个Carthage文件,里面有个Build文件,其中可以找到生成的库
记录zhangsaidong@zhangsaidongs-MacBook-Pro InterfaceKit % cd /Users/zhangsaidong/Desktop/test
zhangsaidong@zhangsaidongs-MacBook-Pro test % $ carthage update --platform iOS
zsh: command ...
Carthage使用摘录
Carthage使用摘录========================通常来说,carthage库编译快(因为不用再编译源码),但是编译后的App通常更占内存,Swift Package Manager也是,它们夹带一些其他文件,所以建议发布前,尽量用Pod,也就是开发用Carthage、Swift Package Manager,发布能用cocoapods就用cocoapods。看图秒懂系列
Carthage库制作摘录
Carthage库制作摘录========================看图秒懂系列