This article comes from the special training column of algorithm interview questions. There are a large number of professional algorithm questions here, such as 21 days of dynamic planning, 28 days of special training in large factories, etc
Welcome to study together.
Link: Portal
Reading guide
Fat friends, in order to better help new students adapt to algorithms and interview questions, we recently started a special assault step by step. In the last issue, we completed 21 days of dynamic programming, and now we will make a 28 day summary of various algorithms. What are you waiting for? Come and have a 28 day challenge with Feixue!!
Special introduction
📣 Xiaobai training column is suitable for newcomers who have just started or students who take the second level of python. You are welcome to subscribe Programming Xiaobai advanced
📣 The interesting Python hand training project includes interesting articles such as robot awkward chat and spoof program, which can make you happy to learn python Training project column
📣 In addition, students who want to learn java web can take a look at this column: Teleporters
📣 This is a sprint factory interview column and algorithm competition practice. Let's cheer together The way ashore
Algorithm training for 28 days
Please judge whether a 9 x 9 Sudoku is effective. You only need to verify whether the numbers you have filled in are valid according to the following rules.
The numbers 1-9 can only appear once in each line. The numbers 1-9 can only appear once in each column. The numbers 1-9 are in each 3x3 separated by a thick solid line
Intrauterine can only occur once. (please refer to the example diagram)
be careful:
An effective Sudoku (partially filled) is not necessarily solvable. You only need to verify whether the filled number is correct according to the above rules
The effect is enough. Use '.' for blank space express. Give you two strings: ransomNote and magazine. Judge whether ransomNote can be
The characters in magazine.
If yes, return true; Otherwise, false is returned.
Each character in magazine can only be used once in ransomNote.
Example 1: Input: ransomNote = "a", magazine = "b" Output: false
Example 2: Input: ransomNote = "aa", magazine = "ab" Output: false
Example 3: Input: ransomNote = "aa", magazine = "aab" Output: true
Idea: the title requires the characters in the string \ textit{magazine}magazine to build a new string
\textit{ransomNote}ransomNote, and \ textit{ransomNote}ransomNote
Each character in the string can only be used once, which only needs to meet each English letter in the string \ textit{magazine}magazine
(\ texttt {a '-' z '}) (' a '-' z ') the number of statistics is greater than or equal to \ textit{ransomNote}ransomNote
You can count the number of times of the same letter in.
class Solution { public boolean canConstruct(String ransomNote, String magazine) { if (ransomNote.length() > magazine.length()) { return false; } int[] cnt = new int[26]; for (char c : magazine.toCharArray()) { cnt[c - 'a']++; } for (char c : ransomNote.toCharArray()) { cnt[c - 'a']--; if(cnt[c - 'a'] < 0) { return false; } } return true; } }
Given two strings s and t, write a function to judge whether t is an alphabetic ectopic word of s.
Note: if each character in S and t appears the same number of times, s and T are called alphabetic words.
Example 1: input: s = "anagram", t = "nagaram" output: true
Example 2: input: s = "rat", t = "car" output: false
Idea: t is the ectopic word of ss, which is equivalent to "two strings are equal after sorting". So we can compare the strings ss and tt
Sort them separately, and judge whether the sorted strings are equal. In addition, if the length of ss and tt is different, tt must not be an ectopic word of ss.
class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arrays.sort(str1); Arrays.sort(str2); return Arrays.equals(str1, str2); } }
Interview questions
Redis The difference between data structure compressed list and jump table Compressed list( ziplist)It is essentially an array of bytes Redis A linear controller designed to save memory Data structure can contain multiple elements, and each element can be a byte array or an integer. 30 Jump table( skiplist)Is an ordered data structure, which maintains multiple fingers pointing to other nodes in each node Needle, so as to achieve the purpose of fast access to nodes. Jump table supports average O(logN),worst O(N)Complexity You can also batch process nodes through sequential operations Redis How is master-slave synchronization realized? Full synchronization master The server will start a background process for redis Generate a rdb Documents, at the same time, The server will cache all received write commands (including add, delete and change) from the client, and when the background saving process is finished After completion, the rdb File transfer to slave Server, and slave The server will rdb Save the file on disk and Load the data into memory by reading the file, and then master The server will cache the Command passed redis Transmission protocol sent to slave Server, and then slave The server acts on these commands in turn Finally achieve data consistency on their own local data sets. Incremental synchronization from redis 2.8 Before the version, partial synchronization was not supported. When the connection between the master and slave servers was broken, master clothes Server and slave Full data synchronization is carried out between servers. from redis 2.8 In the beginning, even if the master-slave connection is broken halfway, full synchronization is not required, because from this version The concept of partial synchronization is integrated. The implementation of partial synchronization depends on master Server memory for each slave service The synchronizer maintains a synchronization log and synchronization ID for each slave The server is following master When the server synchronizes Carry your own synchronization ID and the last location of the last synchronization. When the master-slave connection is broken, slave Server partition time (Default 1 s)Active attempt and master Connect to the server if the offset ID carried from the server is still there master From the synchronous backup log on the server slave The offset sent starts to continue the last synchronization operation Do, if slave The offset sent is no longer master In the synchronous backup log of (possibly due to the disconnection between master and slave) For a long time or in a short time master If the server receives a large number of writes, it must One full update. During partial synchronization, master The instructions recorded in the locally recorded synchronous backup log will be recorded in sequence Send to slave Server to achieve data consistency. Redis Master slave synchronization strategy When the master and slave are just connected, full synchronization is carried out; After full synchronization, perform incremental synchronization. Of course, if necessary, slave Full synchronization can be initiated at any time. redis The strategy is to try incremental synchronization first anyway, If unsuccessful, the slave is required to perform full synchronization.
Click to get the data directly
There are python, Java learning materials, interesting programming projects and various resources that are hard to find. It's not a loss to look at it anyway.