- 博客(23)
- 收藏
- 关注
原创 java.lang.UnsatisfiedLinkError: no cplex1251 in java.library.path
背景在使用cplex+IntelliJ IDEA某次关闭IDEA后运行程序,报错: java.lang.UnsatisfiedLinkError: no cplex1251 in java.library.path Exception in thread “main” java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX([I
2017-07-14 15:37:15 4053 1
原创 LeetCode 198. House Robber
题意房屋强盗,给出一串非负整数代表各个房屋的金钱,求出今晚可以抢劫到的最大数额金钱。要求不能惊动警察,惊动的条件是抢劫了相邻房屋。题解题目意思可以转化成给出 一个非负整数的数组,求出里面不相邻的多个整数,使得整数的和最大。 可列出状态转移方程: dp[i] = max(dp[i-2]+nums[i],dp[i-1]); 即:第i个房屋的最大数是:抢劫i房屋加上抢劫i-2房屋累积金额,与抢劫i-
2017-06-25 22:02:57 283
原创 算法概论课后习题 8.14
8.14题证明如下问题是NP-完全的:给定一个无向图G=(V,E)和整数k,求G中一个规模为k的团以及一个规模为k的独立集。假定它们都是存在的。证明根据书本p263列举的NP-完全问题,团的问题:给定一个图以及目标g,求图中的g个顶点,使得这些顶点两两都存在相连的边。 假设要求任意一个无向图G=(V,E)中大小为k的团(这是NP-完全问题),再在图G=(V,E)中添加k个相互独立的顶点,得到新的图
2017-06-25 14:52:21 520
原创 LeetCode 80. Remove Duplicates from Sorted Array II
题意移除数组中的副本,但是副本可以出现两次,两次以上的才需要移除题解和Remove Duplicates from Sorted Array一样,只是需要将index设置为2,原来是if(nums[i] != nums[index]) 这里是比较if(nums[i] != nums[index-2])每一次都 是比较index-2和i的数是否相等,因为可以重复出现两次。class Solution
2017-06-22 16:36:48 229
原创 LeetCode 80. Remove Duplicates from Sorted Array II
题意移除数组中的副本,但是副本可以出现两次,两次以上的才需要移除题解和Remove Duplicates from Sorted Array一样,只是需要将index设置为2,原来是if(nums[i] != nums[index]) 这里是比较if(nums[i] != nums[index-2])每一次都 是比较index-2和i的数是否相等,因为可以重复出现两次。class Solution
2017-06-22 16:04:25 286
原创 LeetCode 26. Remove Duplicates from Sorted Array
题意给出一个已排序的数组,移除数组中的副本。返回移除后的数组长度及数组题解给出的nums数组已经排好序,首先判断边界nums.empty(),然后可设置双指针,初始化index = 0&i = 1,一开始index指向nums的第一个元素,i指向nums的第二个元素,如果某一次nums[i] == nums[index] 说明数组两个元素相等,i++,往后寻找 跳过多个副本,直到nums[i] !=
2017-06-22 15:50:38 200
原创 LeetCode 563. Binary Tree Tilt
题意:计算二叉树的Tilt,二叉树结点的Tilt是其左右子树结点value值的和的差的绝对值,整个二叉树的Tile是所有结点的Tilt之和。 题解:采用后序遍历递归求解左右子树的Tilt, 后序遍历函数postorder(root)返回左右子树value和,并加上该Node的val,作为root的左右子树sum。 /** * Definition for a binary tree node
2017-05-30 17:03:39 610
原创 LeetCode 349. Intersection of Two Arrays
题意求集合nums1和nums2的交集题解使用C++ STL的unordered_set来存储nums1,对nums2的每一个元素,判断nums1中是否存在,存在就放入返回结果集res中,并从nums1删除该元素。class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
2017-05-22 14:35:51 215
原创 LeetCode 561. Array Partition I
题意给一个包含2n个整数的数组,将其分成n对,目标函数:MAX(Sum of min(ai,bi)) for i =0,1,2…n题解要保证所有ai bi中较小的一个的和最大,数字都是整数,可以转化为:在一个数轴上有2n个数字,ai和bi的较小值是数轴上的一个点,要让Sum最大,就要保证所有的ai和bi在数轴上的间距dist[ai,bi]最小,所以可以考虑先sort,再累加。public cla
2017-05-14 15:53:19 291
原创 Cplex&Eclipse&IntelliJ环境配置
安装包采用的是老师给的学术版cplex,或者商业版安装包cplex_studio1251.win-x86-64.exe。学术版配置过程软件安装1.运行cplex111.x86_win32_0.exe 2.复制access.ilm到安装目录ILOG的ILM(Mkdir ILM if not exist) 3.添加环境变量 variable “ILOG_LICENSE_FILE” valu
2017-05-09 00:14:28 3555 2
原创 LeetCode 72. Edit Distance
题意:将字符串word1编辑成word2的操作步数,最小的操作步数称为edit distance(编辑距离),有三种操作:插入,删除,替换 You have the following 3 operations permitted on a word:a) Insert a character b) Delete a character c) Replace a character 题解:《
2017-04-20 18:08:37 317
原创 LeetCode 344. Reverse String
题意给出一个字符串s,返回该字符串的翻转形式,如”hello”返回”olleh”题解如果直接从字符串s的最后一个字符开始,从后往前扫描,每一个字符都放入结果字符串t,然而显然就会TTL。。。 所以需要设置两个point,一个指针指向字符串的开头,而另一个指针指向字符串的末尾。两个指针将继续互换其元素并朝向彼此行进。这样的时间复杂度会优于一个指针。//一个指针 O(n) TTLpublic
2017-04-09 20:50:04 219
原创 122. Best Time to Buy and Sell Stock II
题意给你一个数组,数组的每一个元素是当天股价,计算最大收益 find the maximum profit,设计一个算法来找到最大的利润。 您可以根据需要完成尽可能多的交易(即,购买一次并多次出售股票)。 但是,您可能不会同时从事多个交易(即,您必须在再次购买之前先出售该股票)。题解贪心法则, 只要i+1天比i天股票涨了,那就进行一笔i天买入,i+1天卖出的交易,哪怕i+2天跌了,也无关最大收益
2017-04-01 12:15:17 493
原创 LeetCode 136 Single Number
题意给出一个整数数组,除了一个元素只出现一次,数组中的每个元素出现了两次,找出该元素 PS:线性的时间复杂度,能否不用额外空间完成?题解建立一个HashMap,键是整数元素,值是元素出现的次数。对数组进行HashMap的建立,然后遍历HashMap,找出value为1的元素,返回Map的key键 遍历过程参考 Java中HashMap遍历的两种方式 Map map = new HashMap(
2017-03-25 22:18:02 276
原创 500. Keyboard Row
题意给出一串字符words,判断字符中的字符是否都在键盘的同一列上 假设words字符只包含大小写字符题解对words中的每一个word,找出第一个字符所在行数row,对剩余的字符进行判断,如果都在,则res加入该wordpublic class Solution { private static String[] keyboard = {"qwertyuiop", "asdfghjkl"
2017-03-25 18:15:04 206
原创 LeetCode 268. Missing Number
题意0-n的数组里少了一个数(无序的),找出那个数题解和389题find the difference相同的思路是,计算0到n的和nSum,计算数组各个元素的和numsSum,二者的差就是Missing Number Javapublic class Solution { public int missingNumber(int[] nums) { int i;
2017-03-19 17:35:58 404
原创 LeetCode 389. Find the Difference
题意两个字符串s,t,都是小写字母,t由s中的字符和新增的一个字母随机排列组合而成,找出新增的字符!思路最直接的思路是HashMap,根据字符串s建立一个HashMap,key是字母,value是字母出现的次数(因为新增的字母可能本来有),再对字符串t中的每一个字符,判断是否在HashMap中,如果t中字符在HashMap中不存在,则显然是那个不同的字符。如果在HashMap中,将该字符对应的val
2017-03-19 16:57:44 303
原创 100. Same Tree判断二叉树相等
####题意 判断二叉树是否相等——对应结点相同且值相等 ####题解 1:判断特殊情况,结点都为空,返回true 2:二者只有一个为空,返回false 3:既然还没有返回,那么判断的两个结点都不为空,则判断val 4:判断结点val是否相等,不等就返回false 递归判断,一直不返回false,直到判断到二叉树的左右子数都为空,返回true,然后一直递归返回。。。。。。 ps:
2017-03-16 16:43:54 297
原创 LeetCode 147 Insertion Sort List
题意单链表的插入排序题解1:边界条件判断,如果单链表中head为空或只有head,直接返回 2:设置一个结点指针p指向head的下一个结点,将head后的无序表断开,等待排序 3:while循环开始,先存储好下一个等待排序的结点nextNode,为不改变head指针指向,另外定义指针q指向head指针 4:如果p->val比有序表的头结点val小,则将p置为头结点,这一步排序完成(最好情况,保
2017-03-15 16:11:54 291
原创 LeetCode 104 Maximum Depth of Binary Tree
题意基本的求二叉树的深度题题解1:判断特殊情况,根节点为NULL,函数返回深度为0 2:第二种特殊情况,只有根节点(不判断也可) 3:递归调用求出左子树和右子树的深度 最后返回二者大的深度+根节点深度1C语言/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct T
2017-03-10 19:44:15 203
原创 LeetCode 338 Counting Bits
题意给出一个num,输出0到num整数二进制形式中包含1的个数要求时间复杂度比简单方法的O(n*sizeof(integer))好 空间复杂度O(n)题解0:000 1:001 2:010 3:011 4:100 5:101 递推公式: res[1]=res[0]+1; res[2]=res[0]+1; res[3]
2017-03-05 19:48:16 316
原创 LeeeCode 412
LeeeCode 412题目意思很简单,给出一个n,输出1-n的整数,如果整数是3的倍数,输出”Fizz”,如果是5的倍数,输出”Buzz”,如果是15(同时是3和5的倍数)的倍数,输出”FizzBuzz”。题解最简单的解法就是3组if-else判断,利用C语言的char **(二级char指针)存储需要返回的字符串数组(第一级为字符串,第二级为数组)。提交代码框中有说明两点:返回*returnSi
2017-03-04 18:24:52 329
原创 LeetCode 461 Hamming Distance
LeetCode 461 题目:定义Hamming distance是两个整数的二进制形式中,对应位置不同的个数。 题解:利用C/C++语言的二进制操作。x^y的结果是x与y的异或,对异或结果的二进制形式进行循环,想要获取一个数的最低位,让这个数和1 进行&操作,都会得到这个数的最低位。每次判断完最低位后,异或结果右移一位。class Solution {public: int ham
2017-02-25 22:45:55 302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人