[LeetCode C++实现]300. Longest Increasing Subsequence

这道题有个非常巧妙的方法:

class Solution {

public:

int lengthOfLIS(vector<int>& nums) {

vector<int> res;

for(int i = 0;i < nums.size();i++)

{

auto it = lower_bound(res.begin(),res.end(),nums[i]);

if(it == res.end()){

res.push_back(nums[i]);

}

else

*it = nums[i];

}

return res.size();

}

......

[LeetCode C++实现]120. Triangle

假期的周末晚上,刷起来leetcode,2021年第一题,动态规划,走你。

class Solution {

public:

int minimumTotal(vector<vector<int>>& triangle) {

vector<int> mini = triangle[triangle.size() - 1];

for(int i = triangle.size() - 2;i >= 0;i--)

for(int j = 0;j < triangle[i].size();j++)

mini[j] = triangle[i......

Lua设计与实现

2021年第一天,学习lua源代码,本文记录学习过程中遇到的问题和知识点,希望能在2021年上半年完成lua源代码的初步学习。

使用C模拟面向对象

使用union将所有数据包起来,一般情况下,如果看到一个数据类型是union,就可以知道这个数据想以一种较为省内存的方式来表示多种用途,而这些用途之间是互斥的,也就是说,在某个时刻该数据类型只会是其中的一个含义,一个简单的例子:

#include <stdio.h>

#include <stdlib.h>

typedef struct string {

int len;

char *data[0];

}strin......

UNIX/Linux系统管理技术手册

书架上的这块大部头书在5.1的时候终于有时间来学习了,本文将长期更新,记录UNIX/Linux系统管理技术手册学习中的疑问与解答。该书在豆瓣评分颇高,UNIX/Linux系统管理技术手册.勘误表在本文最后,如有疑问欢迎留言讨论。

笔记中实际操作的系统来自于ubuntu,运行在一款古董级的hp笔记本上,在Macbook Pro中运行了一台centos7虚拟机,电脑卡的时候关闭该虚拟机使用hp笔记本中的虚拟机。

GO 代码编写 构建 单测实例

go官方一个非常精简的介绍Writing, building, installing, and testing Go code

Essential Go

看一遍视频跟着操作,记录命令执行过程,其中hello.go源码如下:

package main

import "fmt"

func main() {

fmt.Println("Hello,world")

}

命令执行过程如下,主要演示了设置GOPATH,代码如何组织,生成的二进制文件,并且设置环境变量直接执行二进制:

[root 52coder]#mkdir -p /root/workspace/go

[root 52c......

日常开发笔记总结(九)

deprecated用法

一个可运行的demo:

#include <iostream>

// [[deprecated]]

#if __cplusplus >= 201402

# define CPP_DEPRECATED [[deprecated]]

#else

# define CPP_DEPRECATED [[gnu::deprecated]]

#endif // __cplusplus >= 201402

CPP_DEPRECATED

void add(int a,int b);

void add(int a,int b)

{

in......

[LeetCode C++实现]36. Valid Sudoku

36. Valid Sudoku

class Solution {

public:

bool isValidSudoku(vector<vector<char>>& board) {

//row[m][n]代表第m+1行是否已使用数字n+1

//col[m][n]代表第m+1列是否已使用数字n+1

//sub_33[m][n]将格子分成了9个小的3x3,m代表第几个3x3小格子,n代表n+1是否已使用

int row[9][9] ={0},col[9][9]={0},sub_33[9][9]={0};

for(int i = 0;i < board.......

[LeetCode C++实现]208. Implement Trie (Prefix Tree)

208. Implement Trie (Prefix Tree)

实现思路是每个结点保存一个26个指针数组,在插入的时候建立前后关系,查询完整单词依赖is_word,而查询前缀只要单词长度查完,没有出现NULL即匹配,完整代码如下(包含析构函数):

class TrieNode {

public:

// Initialize your data structure here.

bool is_word;

TrieNode *children[26];

TrieNode() {

is_word = false;

for (int i = 0; i < 26; i++)

chi......

[LeetCode C++实现]52. N-Queens II

52. N-Queens II

52的解法相对比51更简单,无需保存具体的结果,只是统计符合条件解法的个数。代码从51的解法稍加修改:

class Solution {

public:

int totalNQueens(int n) {

vector<string> nQueens(n,string(n,'.'));

int cnt = 0;

solveNQueens(nQueens,0,n,cnt);

return cnt;

}

private:

void solveNQueens(vector<string> &nQueens, int row,......

[LeetCode C++实现]51. N-Queens

51. N-Queens

非常经典的问题,这里使用DFS解决,代码如下:

class Solution {

public:

vector<vector<string>> solveNQueens(int n) {

vector<vector<string>> res;

vector<string> nQueens(n,string(n,'.'));

solveNQueens(res,nQueens,0,n);

return res;

}

private:

void solveNQueens(vector<vector&l......