自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

原创 15445 lecture#4 Database Storage 2

1 Data RepresentationA data representation scheme is how a DBMS stores the bytes for a value. There are five high level datatypes that can be stored in tuples: integers, variable-precision numbers, fixedpoint precision numbers, variable length values, a

2021-03-27 20:10:43 267 1

原创 15445 lecture#3 Database Storage 1

1 storage我们主要关注的是disk-oriented DBMS,即DB是存在disk上的Volatile:断电就失去保存的内容 支持高速随机存取,byte-addressable 我们统称为memoryNon-Volatile:不需要通电也能保存数据 block/page addressable 对顺序存取支持更好 统称为disk,一般本课不会去区分SSD和HDD当前还有一种正在研发并流行的存储介质,persistent memory,具有上述两者的优点,快并且p.

2021-03-27 18:35:59 353

原创 15445 lecture#2 Intermediate SQL

(本来在想,Intermediate指啥,貌似应该是和advanced相对,中级的意思1Relational LanguagesEdgar Codd published a major paper on relational models in the early 1970s. Originally, he only defined themathematical notation for how a DBMS could execute queries on a relational model.

2021-03-26 12:52:40 332 1

原创 15-445 lecture#1 Relational Model & Relational Algebrae

1 DatabasesA database is an organized collection of inter-related data that models some aspect of the real-world (e.g.,modeling the students in a class or a digital music store). People often confuse “databases” with “databasemanagement systems” (e.g., ...

2021-03-25 18:15:33 214

原创 6.824 Lab 1 实验指导书: MapReduce

IntroductionIn this lab you'll build a MapReduce system. You'll implement a worker process that calls application Map and Reduce functions and handles reading and writing files, and a coordinator process that hands out tasks to workers and copes with fa

2021-03-22 21:48:03 575 1

原创 6.824 paper MapReduce: Simplified Data Processing on Large Clusters

本文关于原理部分的内容主要在第三第四节:3 Implementation3.1 Execution OverviewThe Map invocations are distributed across multiplemachines by automatically partitioning the input datainto a set of M splits. The input splits can be pro-cessed in parallel by different m..

2021-03-22 20:09:33 408 2

原创 6.824 2021 Lecture 1: Introduction

暂时想到的做笔记的方法,直接把文章复制过来,然后在下面写笔记,类似中英对照的形式吧6.824: Distributed Systems EngineeringWhat is a distributed system? multiple cooperating computers storage for big web sites, MapReduce, peer-to-peer sharing, &c 对这里提到的peer-to-peer sharing不是很有intuition,.

2021-03-22 20:09:21 200

原创 cs144 lab0 networking warmup

https://github.com/RedemptionC/cs144/tree/lab0overviewlab0中:配环境 手动执行一些网络相关任务 写一个类似wget的代码 实现writer和reader之间的可靠字节流其中开发本身相对简单,占比较大的是:开发环境和c++开发环境这里推荐直接使用给出的virtual box镜像,是无GUI版,也不怎么占资源,而且VB还支持无界面启动写代码的时候,可以使用clion,配置好远程开发(jetbrains的远程开发和vsc.

2021-01-24 23:33:42 397

原创 15-445 homework#1 sql

overview主要是对如上结构的db,根据各种要求写sql题目Q1 [0 POINTS] (Q1_SAMPLE):The purpose of this query is to make sure that the formatting of your output matches exactly the formatting of our auto-grading script.Details:List all types of work ordered by type asc.

2020-12-20 21:43:19 512

原创 15-445 project#0 cpp primer

overview本lab是作为一个15445的语言入门关(cpp),所以主要是熟悉一下modern cpp的语法和用法,以及本课程做lab时需要注意的一些东西(为了遵守课程要求,代码暂不放出代码内容主要实现三个类:matrix,RowMatrix,RowMatrixOperationsmatrix是个抽象类,定义了矩阵这个类所需要的一些基本成员变量和函数:因为大部分是虚函数,所以不需要我们填写实现需要做的是在构造函数里初始化一些变量:rows,columns,以及初始化一个一

2020-12-13 16:04:50 2865 8

原创 6.824lab预备篇:go tour

go tour可以运行在本地,但是因为我一般都是用vscode remote 而且运行go get golang.org/x/tour的时候提示 connection refused,所以还是在网页上做,这里会记录一些值得留意的东西:热身在线版go tour是建立在go playground上的,有一些特别之处:他的时间总是从2009-11-10 23:00:00 UTC开始,而且对执行时间,以及cpu和内存的使用有一些限制,并且不能访问外部网络主机(那爬虫?) 在线版go tour的

2020-11-12 23:04:50 504

原创 lc 394. 字符串解码(栈 TODO

给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4]的输入。示例 1:输入:s = "3[a]2[bc]"输出:"aaabcbc"示例 2:...

2020-10-27 22:38:03 351

原创 lc 1365. 有多少小于当前数字的数字(计数排序

1365. 有多少小于当前数字的数字难度简单111给你一个数组nums,对于其中每个元素nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个nums[i]你必须计算出有效的j的数量,其中j满足j != i且nums[j] < nums[i]。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。...

2020-10-26 22:10:32 96

原创 lc 347. 前 K 个高频元素(

347. 前 K 个高频元素难度中等552给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(nlogn) ,n是数组的大小。 题目数据保证答案唯一,换句话说,...

2020-10-25 22:43:58 130

原创 lc 338. 比特位计数(dp

338. 比特位计数难度中等432给定一个非负整数num。对于0 ≤ i ≤ num范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗? 要求算法的空间复杂度为O(n)。 你能进一步完善解法吗?要求在C++或任何其他...

2020-10-25 15:22:42 102

原创 lc 打家劫舍系列 198 213 337

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:...

2020-10-24 20:10:20 130

原创 lc 287. 寻找重复数(快慢指针

不能更改原数组(假设数组是只读的)。 只能使用额外的O(1) 的空间。 时间复杂度小于O(n2) 。本题的难点主要在于上述几个要求:因为1,所以不能将元素移到他对应的位置,然后通过对应的位置上已经有数字来判断重复;也不能对原数字排序因为2,不能使用hash计数来判断看题解发现了一个绝妙的解法:通过元素的值,将数组index串起来,既然有重复,就形成了一个环,就能用快慢指针来解决,比如:0 1 2 3 41 3 4 2 2那么0->1->3->2-&...

2020-10-16 13:28:01 144

原创 lc 253. 会议室 II

本质是要求:所有的时刻,正在开会的会议数的最大值开始没有思路,后来讨论区提到了,这其实就像上下车,一旦开始开会,那么就上车了,一旦会议结束,就下车了,要求的是车上人数的最大值做法是维护开始开会时间,结束开会时间两个list,排序,然后用两个指针分别遍历,如果开始的时间较大,那么车上人数++,否则,则是人数--取最大值因为结束会议的时间总是大于(等于)开始会议的时间,所以不会出现ep遍历完了,sp还没遍历完的情况(先取小的嘛,肯定是sp先完)import java.util.ArrayL

2020-10-14 13:36:14 398

原创 lc 1616. 分割两个字符串得到回文串

这个题直觉上感觉很简单,但是按照直觉的做法做,却发现corner case不断看了别人的题解,发现这个题主要考虑这么几种情况:(首先我们定义一下在i处cut:分割得到[0,i-1],[i,len-1]两个字符串1.其中一个串本身就是回文串,如aba,abc那么我们只需要在0处cut(注意,这里i-1<0,代表空串),那么得到空串+aba,以及空串加abc,只要让第一个里的aba和另一个里的空串组合即可得到回文串因此我们首先检查两个串是否本身就是回文串2.这里一开始的做法和我的直

2020-10-12 00:08:14 166

原创 lc 236. 二叉树的最近公共祖先

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNod.

2020-10-09 21:08:24 153

原创 lc 221. 最大正方形

本题我也能很快的想到用dp,dp[i][j]表示以[i,j]为右下角的最大正方形的边长但是在递推的时候,没有想到直接利用之前的计算的办法,当时想的是除了dp[i-1][j-1],就是看(i,j)左边和上边为1的个数但是实际上可以利用dp[i-1][j],dp[i][j-1]参考:https://leetcode-cn.com/problems/maximal-square/solution/li-jie-san-zhe-qu-zui-xiao-1-by-lzhlyle/class

2020-10-08 20:11:10 104

原创 lc 215. 数组中的第K个最大元素(排序,堆,quick-select

思路很多:1.将整个数组排序之后的第k个2.大小为k的小顶堆3.quick-select,即快排的partition函数,每次都能将一个放在应该的位置,如果该位置是k-1,那么就是要找的元素1.时间:O(nlgn),空间O(1)2.时间(nlgk),空间(k)3.时间O(kn)???O(n)??本题要做出来不难,但是要想起到比较好的复习作用,需要做的工作很多:1我们一般会选择快排,那么和3会共用一个...

2020-10-08 19:44:05 114

原创 lc 208. 实现 Trie (前缀树)

class Trie { private class Node{ private Node[] next; // true代表一个单词结尾于此 private boolean hasWord; public Node(){ next=new Node[26]; } } private Node root; /** Initialize your data structu.

2020-10-08 16:01:00 84

原创 lc 207. 课程表

class Solution { // 保存每个点的入度列表和出度列表 // 从所有入度为0的点开始遍历,如果最终能够遍历到所有点,那么可以 private int cnt; private boolean[] vis; private void helper(int cur,int start){ if(start!=cur){ inDegree[cur]--; } vis[cur]=true.

2020-10-06 21:30:07 185

原创 lc 152. 乘积最大子数组

class Solution { // 因为是乘法,如果都是正整数,那么结果只会越乘越大,但如果有了负数,最大数会变成最小,最小会变成最大,因此要同时维护最小和最大 // 当前最大可能是:当前数本身(因为可能之前有0),之前的最大乘积乘以当前(如果当前为正数),之前的最小乘积乘以当前(如果当前负数) // 取这三种中最大的,而当前最小则是取三者中最小的 public int maxProduct(int[] nums) { if(nums==null||nu.

2020-10-06 20:40:02 108

原创 lc 148. 排序链表 ( bottom-up 归并排序

归并排序,如果不要求O(1)的空间复杂度,可以很简洁的完成:找到当前链表的中点,然后对链表的两半递归的进行排序,merge但是现在需要O(1)的空间,所以不能递归,选用自底向上的归并排序:对原链表按不同的粒度进行划分,一开始粒度为1,然后进行merge/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNod

2020-10-05 12:43:33 162

原创 lc 18. 四数之和

18. 四数之和难度中等592给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1,...

2020-10-05 11:06:30 97

原创 LeetCode 142. 环形链表 II(双指针,哈希表

142. 环形链表 II难度中等637给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。...

2020-10-04 15:27:46 86

原创 LeetCode 139. 单词拆分(记忆化搜索 dp

基本上是参考这一篇:https://leetcode-cn.com/problems/word-break/solution/shou-hui-tu-jie-san-chong-fang-fa-dfs-bfs-dong-tai/一个关键点在于:判断其中一部分如果在词典中,那么只要递归的判断剩下一部分即可可以很快写出一个简单的搜索:class Solution { // 思路 前一部分是词典里的单词 那么将后一部分继续递归判断 private boolean helper(Str

2020-10-03 22:13:21 173

原创 LeetCode 105. 从前序与中序遍历序列构造二叉树

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { // 我们需要跟踪根的位置:前序和中序 都需要 // 但是前序中根的位置是有迹可循的:i=0,i+左子树节点数.

2020-10-02 19:46:49 132

原创 LeetCode 56. 合并区间(排序

class Solution { public int[][] merge(int[][] intervals) { // 对数组排序,首先按照左边界,如果左边界相同,那么按照右边界 Comparator<int[]> cmp=(a,b)->{ if(a[0]!=b[0]){ return a[0]-b[0]; }else{ ret.

2020-10-01 23:03:48 96

原创 LeetCode 55. 跳跃游戏 ( 回溯 dp 贪心

这个题字节一面做过 不过当时没想到好的解法首先能写出一个回溯的搜索算法:class Solution { private boolean[] vis; private boolean dfs(int[] nums,int cur){ if(cur==nums.length-1){ return true; } boolean rs=false; vis[cur]=true; fo

2020-10-01 19:17:30 398

原创 LeetCode 49. 字母异位词分组(hashmap

class Solution { // 判断两个是否是***的方法: // 1.排序之后是否完全相同 // 2.对字符串的字母出现次数进行统计,应该完全相同 // 找了一个不太难,但是比较通用的算法: // 建立一个map,key是排序后的字符串,val是对应的**** // public List<List<String>> groupAnagrams(String[] strs) { HashMap&lt.

2020-10-01 14:59:39 96

原创 LeetCode 48. 旋转图像(转置+行逆置

class Solution { // 来自评论区降维打击的思路:先转置,再每行reverse public void rotate(int[][] matrix) { // trans for(int i=0;i<matrix.length;i++){ for(int j=i;j<matrix[0].length;j++){ int t=matrix[i][j]; .

2020-10-01 14:33:48 106

原创 LeetCode 39. 组合总和(回溯 去重

class Solution { private List<List<Integer>> rs; private void dfs(int[] candidates,int target,int cur,List<Integer> curList,int pos){ if(cur==target){ rs.add(new ArrayList<>(curList)); return.

2020-10-01 10:43:43 130

原创 LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找 左右边界

class Solution { public int[] searchRange(int[] nums, int target) { int i1=-1,i2=-1; // 先找最左边的 int lo=0,hi=nums.length-1; while(lo<=hi){ int mid=(lo+hi)/2; if(nums[mid]>target){ .

2020-10-01 10:33:46 204

原创 LeetCode 33. 搜索旋转排序数组(二分查找

class Solution { // 首先确定这个pivot,然后在其左右分别进行搜索 private int binSearch(int lo,int hi,int[] nums,int target){ while(lo<=hi){ int mid=(lo+hi)/2; if(nums[mid]<target){ lo=mid+1; }else i...

2020-09-30 22:29:06 70

原创 LeetCode 31. 下一个排列

class Solution { public void nextPermutation(int[] nums) { int index=-1; for(int i=nums.length-1;i>0;i--){ if(nums[i]>nums[i-1]){ index=i-1; break; } } if(in.

2020-09-30 09:22:17 65

原创 LeetCode 22. 括号生成(回溯 动态规划TODO

题目不难,熟悉回溯可以无脑写出代码,但是要优化时间复杂度,需要进一步的工作:无脑回溯 百分之五class Solution { private List<String> rs; private char[] c=new char[]{'(',')'}; private boolean valid(StringBuilder sb){ ArrayDeque<Character> stack=new ArrayDeque<>(

2020-09-29 20:55:11 126

原创 LeetCode 15. 三数之和

class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> rs=new ArrayList<>(); if(nums==null||nums.length<3){ return rs; } Arrays.sort(nums); .

2020-09-29 17:05:58 63

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除