LeetCode百题【最长回文串】
题目描述
解法
哈希表
键为字符
值为出现的次数
贪心算法
贪心策略:对于偶数串,我们全都要,对于奇数串,我们可以-1再要(变相将其变为偶数串)最后因为只能有一个奇数串占据中间位置(如果有奇数串)我们整体+1;
12345678910111213141516171819202122232425262728class Solution { public int longestPalindrome(String s) { int cnt=0; HashMap<Character,Integer> hashMap=new HashMap<>(); for (int i = 0; i <s.length(); i++) { if(!hashMap.containsKey(s.charAt(i))){ hashMap.put(s.charAt(i),1); } ...
LeetCode百题【分发饼干】
题目描述
解法
贪心算法
贪心策略:为了尽可能满足最多数量的孩子,从贪心的角度考虑,应该按照孩子的胃口从小到大的顺序依次满足每个孩子,且对于每个孩子,应该选择可以满足这个孩子的胃口且尺寸最小的饼干
1234567891011121314151617class Solution { public int findContentChildren(int[] g, int[] s) { int child=0; int cookies=0; Arrays.sort(g); Arrays.sort(s); //先对两个数组进行排序 while (child<g.length&&cookies<s.length){ if(g[child]<=s[cookies]){ child++; } cookies++; ...
LeetCode百题【多数元素】
题目描述
解法一
哈希表
先将元素存入哈希表,后再对哈希表进行遍历
通过哈希表进行存储数据
key为元素值
value为出现的次数
1234567891011121314151617181920212223242526class Solution { public int majorityElement(int[] nums) { int result=0; int cntMax=0; Map<Integer,Integer> map=new HashMap<Integer,Integer>(); for (int num : nums) { if(!map.containsKey(num)){ map.put(num,1); } else{ map.put(num,map.get(num)+1); ...
LeetCode百题【将有序数组转换为二叉搜索树】
题目描述
解法分治法
选出根节点
比根节点小的值放入左子树
比根节点大的值放入右子树
对于左右子树同上,进行递归
123456789101112131415161718192021222324252627282930/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class ...
MySQL数据库学习
数据库概述
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
为什么要使用数据库?
数据持久性: 数据库是设计用来持久存储数据的,这意味着数据在断电或系统关闭后不会丢失。这对于长期存储和恢复数据至关重要。
数据共享: 多个用户和应用程序可以同时访问数据库,这允许多人协作,并确保数据的一致性和可靠性。
数据组织: 数据库允许您以结构化的方式组织数据,这使得数据容易管理和查询。您可以使用表格、索引和关系来存储和检索数据,而不是将其散落在不同的文件中。
数据完整性: 数据库系统提供了数据完整性的机制,可以确保数据的准确性和一致性。这包括主键、外键和约束等功能,可以帮助防止错误的数据输入或修改。
数据安全: 数据库可以实施访问控制和权限管理,以确保只有授权用户可以访问和修改数据。这对于保护敏感信息非常重要。
数据备份和恢复: 数据库管理系统通常提供备份和恢复功能,以防止数据丢失或损坏。这有助于应对硬件故障、人为错误或灾难性事件。
高性能: 数据库系统经过优化,可以处理大量数据和复杂查询。这对于需要高度性能的应用程 ...
LeetCode百题【回文子串】
题目描述
解法一暴力破解法
列出所有子串
判断子串是否为回文串
123456789101112131415161718192021222324252627282930313233343536public class Solution { public static void main(String[] args) { String str="aaa"; System.out.println(countSubstrings(str)); } public static int countSubstrings(String s) { int n=s.length(); int cnt=0; String tmp; for (int i = 0; i < n; i++) { for (int j = i; j <n ; j++) { t ...
LeetCode百题【合并两个有序数组】
题目描述
解法一简单粗暴,俩数组一拼再排序
123456class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { System.arraycopy(nums2,0,nums1,m,n); Arrays.sort(nums1); }}
复杂度分析
时间复杂度:O((m+n)log(m+n)) —-Arrays.sort方法对int默认的排序方法为快排
空间复杂度:O(log(m+n))
解法二
1234567891011121314151617181920//与官方解法类似 不过是倒着来的// 倒序遍历两个数组,将大的数从后往前插入nums1,并将指针向前移动一位,直至其中一个数组遍历完,将另一个未遍历完的数组全部插入到nums1class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { ...
LeetCode百题【无重复字符的最长子串】
题目描述
思路
滑动窗口
123456789101112131415161718192021222324252627class Solution { /** * 滑动窗口 * * @param s * @return */ public int lengthOfLongestSubstring(String s) { int res = 0;//返回结果 int left = 0;//左指针,右指针用i代替 Map<Character, Integer> map = new HashMap<>();//定义映射关系,字符->出现最后位置的下标 for (int i = 0; i < s.length(); i++) { char temp = s.charAt(i); //1.如果出现了重复字符,移动左指针,使滑动窗口内部的字符不重复 if (m ...
LeetCode百题【两数相加】
题目描述
解题思路12345672-->4-->3+5-->6-->4=7-->10-->7merge函数对每一位判断是否需要进行进位处理7-->0-->8
代码1234567891011121314151617181920212223242526272829303132333435363738394041424344/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { ...
LeetCode百题【两数之和】
题目描述
解法一(暴力穷举法)12345678910111213141516class Solution { public int[] twoSum(int[] nums, int target) { int[] result=new int[2]; for (int i = 0; i <nums.length ; i++) { for (int j = i+1; j <nums.length; j++) { if(nums[i]+nums[j]==target){ result[0]=i; result[1]=j; return result; } } } return result; }}
时间复杂度 ...