题目: 给定一个整数数组 num
和一个整数目标值taeget
,请你在该数组中找出 和为目标值target
的两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
思路1:双重暴力循环,O(n^2)的时间复杂度
class Solution { public int[] twoSum(int[] nums, int target) { int [] res=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){ res[0]=i; res[1]=j; break; } } } return res; } }
思路二:利用哈希表
将所给的nums
数组中的数据作为key
值
针对nums
中的每一个值,依次判断在map
中是否存在,
若存在,则直接返回结果
若不存在,则将target-num[i]
存储在map
中
class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> map = new HashMap<>(); for(int i = 0; i < nums.length; i++){ if(map.containsKey(nums[i])){ return new int[]{map.get(nums[i]), i}; } map.put(target - nums[i], i); } return null; } }
扩展: 假如给定的target
是三个数之和呢?这种情况下基于哈希表又将如何进行操作呢?
给你一个包含 n
个整数的数组 nums
,判断 nums
中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?
请你找出所有和为 0 且不重复的三元组。
相似之处:a+b=-c,转换位两数之和即 另target=-c即可
思路:好吧,我是想在每个map.put(a-nums[i])
其中a是遍历nums
数组的结果,但是呢好像运行结果好像不是很理想 毕竟在leetcode
上也算是一个中级难度
使用vs的.xaml
进行开发
MVVM
架构的思想
M -----model
V -----view层
VM-----ViewModel(用于二者之间的连接)
在实际的操作中,分别建立了如下的文件夹
Models 用来创建实体
Services 提供接口和服务
ViewModels
MainPageViewModel.cs
定义变量去调用service层的接口
ViewModelLocator.cs
反正就是起到了一个乱七八糟的连接的作用,在SimpleIoc中获得实例以及注册,俺目前还不太清楚原理,老师说先挖坑再填坑
在之前的开发过程中,数据库需要开发人员自行下载存储,本次采用数据库内嵌操作
private string databasePath = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.LocalApplicationData), "poetry.db");
上述代码将会产生一个当前数据库最安全的存储文件路径.