原创 java 把依賴打到一個整體jar包裏運行(maven)
一、環境 maven 3.6.1 jdk 1.8 二、運行打成整體的jar包: java -jar [包名] 二、maven 中pom.xml插件: <plugin>
原创 java C++ 實現 leetcode 第三題 3. 無重複字符的最長子串 給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。
一、C++實現 int lengthOfLongestSubstring(string s) { if (s.length() <= 1) return s.length();
原创 leetcode 38. 外觀數列 「外觀數列」是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下
1、思路: 從1開始遍歷,求出後面每一個轉化後的數。依次求下一個。 string countAndSay(int n) { string res = "1"; for (int i = 2; i <= n; i++) {
原创 C++ leetCode 37. 解數獨 編寫一個程序,通過已填充的空格來解決數獨問題。
bool check(int &n, char ch, vector<vector<char>> &board) { int row = n / 9; int col = n % 9; for (int i = 0; i < 9;
原创 leetcode C++ 2. 兩數相加 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。 如果,我們將這兩個數
一、C++ ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *resList = new ListNode(-1); resList->val = -1;
原创 C++ leetCode 15 給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
1、C++ vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>>res; sort(nums.begin(), nums.end());
原创 C++ leetcode 7. 整數反轉 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
一、思路 轉化成string, 有負號先去掉負號,然後從string的尾部開始遍歷,每一個字符放到第一個另一個字符串中去。 int reverse(int x) { if (x == 0) return 0;
原创 C++ leetcode14 最長公共前綴 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 ""
1.C++ bool static cmp(const string &a, const string &b) { return a.length() < b.length(); } strin
原创 leetcode C++ 13. 羅馬數字轉整數 羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。
一、C++代碼: int romanToInt(string s) { int res = 0; map<char, int> mapRoman = { {'I',1},{'V',5},{'X',10},{'L',50},{'C'
原创 C++ leetcode 17. 電話號碼的字母組合 給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。 給出數字到字母的映射如下(與電話按鍵相同)。注意 1 不對應任何字母。
一、解題思路 用map可以加快查詢速度,DFS深度搜索,DFS是一種很常見的對於多循環或者n!的好的搜索算法. 二、代碼:C++ void init(map<char, string> &mapDigit) { map
原创 C++ ,leetcode 43. 字符串相乘 給定兩個以字符串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示爲字符串形式
一、思路: 字符串逆序,然後遍歷兩個逆序後的字符串,然後對應的字符相乘,i+j等於它的位數。 string multiply(string num1, string num2) { reverseStr(num1); r
原创 C++ leetcode 面試題64. 求1+2+…+n
一、C++ int sumNums(int n) { int sum=0; for(int i=1;i<=n;i++) sum+=i; return sum;
原创 leetcode C++ 4. 尋找兩個有序數組的中位數 給定兩個大小爲 m 和 n 的有序數組 nums1 和 nums2。 請你找出這兩個有序數組的中位數,並且要求算法的時間複雜度爲 O(log
一、概述: 這道題思路其實蠻簡單的,就是邊界太難考慮了,所以一直沒能通過,寫了好長的代碼考慮邊界,然後看到一個大神寫的代碼: https://leetcode-cn.com/problems/median-of-two-sort
原创 leetCode C++ 二分查找 35. 搜索插入位置 給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。如果目標值不存在於數組中,返回它將會被按順序插入的位置。
一、C++ int binarySearch(vector<int>& nums, int &target, int left, int right) { int mid = (left + right) / 2; if (num
原创 java 41. 缺失的第一個正數: 給你一個未排序的整數數組,請你找出其中沒有出現的最小的正整數。
1、java public int firstMissingPositive(int[] nums) { Set<Integer> setNums=new HashSet<Integer>();